github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/protobuf/acm.proto (about) 1 syntax = 'proto3'; 2 3 package acm; 4 5 option go_package = "github.com/hyperledger/burrow/acm"; 6 7 import "gogoproto/gogo.proto"; 8 9 import "permission.proto"; 10 import "crypto.proto"; 11 12 option (gogoproto.stable_marshaler_all) = true; 13 option (gogoproto.marshaler_all) = true; 14 option (gogoproto.unmarshaler_all) = true; 15 option (gogoproto.sizer_all) = true; 16 option (gogoproto.goproto_registration) = true; 17 option (gogoproto.messagename_all) = true; 18 19 message Account { 20 option (gogoproto.goproto_stringer) = false; 21 bytes Address = 1 [(gogoproto.customtype) = "github.com/hyperledger/burrow/crypto.Address", (gogoproto.nullable) = false]; 22 crypto.PublicKey PublicKey = 2; 23 // Sequence counts the number of transactions that have been accepted from this account 24 uint64 Sequence = 3; 25 // The account's current native token balance 26 uint64 Balance = 4; 27 // We expect exactly one of EVMCode, WASMCode, and NativeName to be non-empty 28 // EVM bytecode 29 bytes EVMCode = 5 [(gogoproto.customtype) = "Bytecode", (gogoproto.nullable) = false]; 30 permission.AccountPermissions Permissions = 6 [(gogoproto.nullable) = false]; 31 // WASM bytecode 32 bytes WASMCode = 7 [(gogoproto.customtype) = "Bytecode", (gogoproto.jsontag) = ",omitempty", (gogoproto.nullable) = false]; 33 // Fully qualified (`<contract name>.<function name>`) name of native contract this for which this account object 34 // is a sentinel value. Which is to say this account object is a pointer to compiled code and does not contain 35 // the contract logic in its entirety 36 string NativeName = 11 [(gogoproto.jsontag) = ",omitempty"]; 37 // The sha3 hash of the code associated with the account 38 bytes CodeHash = 8 [(gogoproto.customtype) = "github.com/hyperledger/burrow/binary.HexBytes", (gogoproto.nullable) = false, (gogoproto.jsontag) = "-"]; 39 // Pointer to the Metadata associated with this account 40 repeated ContractMeta ContractMeta = 9; 41 // The metadata is stored in the deployed account. When the deployed account creates new account 42 // (from Solidity/EVM), they point to the original deployed account where the metadata is stored. 43 // This original account is called the forebear. 44 bytes Forebear = 10 [(gogoproto.customtype) = "github.com/hyperledger/burrow/crypto.Address"]; 45 } 46 47 message ContractMeta { 48 bytes CodeHash = 1 [(gogoproto.customtype) = "github.com/hyperledger/burrow/binary.HexBytes", (gogoproto.nullable) = false]; 49 bytes MetadataHash = 2 [(gogoproto.customtype) = "github.com/hyperledger/burrow/binary.HexBytes", (gogoproto.nullable) = false]; 50 // In the dump format we would like the ABI rather than its hash 51 string Metadata = 3; 52 }