Получить идентификацию клиента fabri c -contract-api- go - PullRequest
0 голосов
/ 07 апреля 2020

В fabri c -contract-api- go есть метод для получения идентификатора инициатора транзакции

func (ctx *TransactionContext) GetClientIdentity() cid.ClientIdentity

Как мы можем использовать его для возврата идентификатора клиента, когда , например, , create вызывается в этом контракте https://github.com/hyperledger/fabric-contract-api-go/blob/master/tutorials/getting-started.md

// ...
// ...

// Create adds a new key with value to the world state
func (sc *SimpleContract) Create(ctx contractapi.TransactionContextInterface, key string, value string) error {
    existing, err := ctx.GetStub().GetState(key)

    if err != nil {
        return errors.New("Unable to interact with world state")
    }

    if existing != nil {
        return fmt.Errorf("Cannot create world state pair with key %s. Already exists", key)
    }

    err = ctx.GetStub().PutState(key, []byte(value))

    if err != nil {
        return errors.New("Unable to interact with world state")
    }

    return nil
}

// ...
// ...

1 Ответ

1 голос
/ 07 апреля 2020

GetClientIdentity возвращает вам интерфейс типа ClientIdentity, определенный здесь https://github.com/hyperledger/fabric-chaincode-go/blob/master/pkg/cid/interfaces.go Здесь показаны функции, которые вы можете затем вызывать для получения информации об отправителе транзакции (ie идентификатор клиента)

...