Wahrscheinlich Sie müssen die Verwendung der API GetCreator
in Betracht ziehen, um das Zertifikat des Clients zu extrahieren, der den Transaktionsvorschlag erstellt hat. Sobald Sie Zertifikat erhalten wird können Sie gewünschte Funktionalität implementieren, zB:
Nur Admin-Benutzer in der Lage sein, neue Murmeln
zu erstellen und zuweisen
Benutzer (Amy, Alice, Ava aus diesem Beispiel) sollte dürfen nur die Murmeln übertragen, dass sie
Hier besitzen ist das Beispiel dafür, wie Zertifikat desirialize innerhalb chaincode:
func (*smartContract) Invoke(stub shim.ChaincodeStubInterface) peer.Response {
fmt.Println("Invoke")
serializedID, _ := stub.GetCreator()
sId := &msp.SerializedIdentity{}
err := proto.Unmarshal(serializedID, sId)
if err != nil {
return shim.Error(fmt.Sprintf("Could not deserialize a SerializedIdentity, err %s", err))
}
bl, _ := pem.Decode(sId.IdBytes)
if bl == nil {
return shim.Error(fmt.Sprintf("Could not decode the PEM structure"))
}
cert, err := x509.ParseCertificate(bl.Bytes)
if err != nil {
return shim.Error(fmt.Sprintf("ParseCertificate failed %s", err))
}
fmt.Println(cert)
return shim.Success(nil)
}