Интерфейс 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
. Теперь при установке / создании цепного кода вычисляется хэш цепного кода, который сохраняется в пространстве имен жизненного цикла, связанном с цепным кодом. Поэтому, если другой узел будет иметь другой двоичный код и попытается использовать его, узел не сможет его выполнить.