Проблема безопасности с цепочкой кода Hyperledger (умный контракт) - PullRequest
0 голосов
/ 11 сентября 2018

Я читал документацию по Hyperledger Fabric и обнаружил очень запутанный аспект. Я не знаю, действительно ли это проблема безопасности или я что-то не так понял.

Начиная с этого раздела документации, я понял, что interface смарт-контракта должен быть одинаковым, когда он создается в разных пирах. Означает ли это, что у меня может быть разная бизнес-логика в функциях интеллектуального контракта при одном и том же интерфейсе при его развертывании на разных узлах?

Если я прав, разве это не означает БОЛЬШУЮ проблему безопасности в дизайне? Любая помощь в понимании концепции будет принята с благодарностью.

1 Ответ

0 голосов
/ 11 сентября 2018

Интерфейс Chaincode строго определен и не может быть изменен, интерфейс:

// Chaincode interface must be implemented by all chaincodes. The fabric runs
// the transactions by calling these functions as specified.
type Chaincode interface {
    // Init is called during Instantiate transaction after the chaincode container
    // has been established for the first time, allowing the chaincode to
    // initialize its internal data
    Init(stub ChaincodeStubInterface) pb.Response

    // Invoke is called to update or query the ledger in a proposal transaction.
    // Updated state variables are not committed to the ledger until the
    // transaction is committed.
    Invoke(stub ChaincodeStubInterface) pb.Response
}

У вас есть один метод для обработки аспекта вашей логики, в то время как остальные будут выполняться методом Invoke. Теперь при установке / создании цепного кода вычисляется хэш цепного кода, который сохраняется в пространстве имен жизненного цикла, связанном с цепным кодом. Поэтому, если другой узел будет иметь другой двоичный код и попытается использовать его, узел не сможет его выполнить.

...