ОК, поэтому предположим, что Алиса - агент.Есть функция onlyAgent()
, которую вы хотите гарантировать, что она может быть вызвана только Алисой.Это будет что-то вроде этого
func (t *SimpleChaincode) createParticipant (stub shim.ChaincodeStubInterface, args []string) pb.Response {
username := args[0]; // This would be Alice
type := args[1]; // This should be Agent
user := &marble{type , username }
userAsJsonBues, err := json.Marshal(user )
err = stub.PutState(marbleName, userAsJsonBues);
return shim.Success(nil);
}
func (t *SimpleChaincode) onlyAgent(stub shim.ChaincodeStubInterface, args []string) pb.Response {
username := args[0]; // Expects to be Alice
aliceAsBytes, err := stub.GetState(username)
alice:= User{}
err = json.Unmarshal(aliceAsBytes, &alice)
// alice.user should return Agent. Perform whatever checks you want
}
Это должно дать вам приблизительное представление о том, как действовать, пару вещей, которые нужно запомнить
- В этом примере требуется передать имя Алисав качестве параметра в
onlyAgent
.Я сделал это в демонстрационных целях, технически вы хотели бы извлечь сертификат Алисы и затем напрямую запросить Алису (я могу сделать это в nodejs
цепном коде, но не могу найти точный вызов API в go
)