diff --git a/core/constants.go b/core/constants.go index bff20dd6..e1861bee 100644 --- a/core/constants.go +++ b/core/constants.go @@ -132,6 +132,24 @@ const BuiltInFunctionUnGuardAccount = "UnGuardAccount" // BuiltInFunctionMigrateDataTrie is the built-in function key for migrating the data trie const BuiltInFunctionMigrateDataTrie = "MigrateDataTrie" +// ESDTSetTokenType represents the builtin function name to set token type +const ESDTSetTokenType = "ESDTSetTokenType" + +// ESDTModifyRoyalties represents the builtin function name to modify royalties +const ESDTModifyRoyalties = "ESDTModifyRoyalties" + +// ESDTSetNewURIs represents the builtin function name to set new URIs for NFTs +const ESDTSetNewURIs = "ESDTSetNewURIs" + +// ESDTModifyCreator represents the builtin function name to modify creator for NFTs +const ESDTModifyCreator = "ESDTModifyCreator" + +// ESDTMetaDataRecreate represents the builtin function name to recreate the metadata for ESDT tokens +const ESDTMetaDataRecreate = "ESDTMetaDataRecreate" + +// ESDTMetaDataUpdate represents the builtin function name to update the metadata for ESDT tokens +const ESDTMetaDataUpdate = "ESDTMetaDataUpdate" + // ESDTRoleLocalMint is the constant string for the local role of mint for ESDT tokens const ESDTRoleLocalMint = "ESDTRoleLocalMint" @@ -159,6 +177,21 @@ const ESDTRoleNFTUpdateAttributes = "ESDTRoleNFTUpdateAttributes" // ESDTRoleTransfer is the constant string for the local role to transfer ESDT, only for special tokens const ESDTRoleTransfer = "ESDTTransferRole" +// ESDTRoleSetNewURI represents the role which can rewrite the URI in the token metadata +const ESDTRoleSetNewURI = "ESDTRoleSetNewURI" + +// ESDTRoleModifyRoyalties represents the role which can rewrite the royalties of a token +const ESDTRoleModifyRoyalties = "ESDTRoleModifyRoyalties" + +// ESDTRoleModifyCreator represents the role which can rewrite the creator in the token metadata +const ESDTRoleModifyCreator = "ESDTRoleModifyCreator" + +// ESDTRoleNFTRecreate represents the role which can recreate the token metadata +const ESDTRoleNFTRecreate = "ESDTRoleNFTRecreate" + +// ESDTRoleNFTUpdate represents the role which can update the token metadata +const ESDTRoleNFTUpdate = "ESDTRoleNFTUpdate" + // ESDTType defines the possible types in case of ESDT tokens type ESDTType uint32 @@ -167,17 +200,71 @@ const ( Fungible ESDTType = iota // NonFungible defines the token type for ESDT non fungible tokens NonFungible + // NonFungibleV2 defines the token type for ESDT non fungible tokens + NonFungibleV2 + // SemiFungible defines the token type for ESDT semi fungible tokens + SemiFungible + // MetaFungible defines the token type for ESDT meta fungible tokens + MetaFungible + // DynamicNFT defines the token type for ESDT dynamic NFT tokens + DynamicNFT + // DynamicSFT defines the token type for ESDT dynamic SFT tokens + DynamicSFT + // DynamicMeta defines the token type for ESDT dynamic meta tokens + DynamicMeta ) +// String will convert number type in string +func (t ESDTType) String() string { + switch t { + case Fungible: + return FungibleESDT + case NonFungible: + return NonFungibleESDT + case NonFungibleV2: + return NonFungibleESDTv2 + case SemiFungible: + return SemiFungibleESDT + case MetaFungible: + return MetaESDT + case DynamicNFT: + return DynamicNFTESDT + case DynamicSFT: + return DynamicSFTESDT + case DynamicMeta: + return DynamicMetaESDT + default: + return "Unknown" + } +} + // FungibleESDT defines the string for the token type of fungible ESDT const FungibleESDT = "FungibleESDT" // NonFungibleESDT defines the string for the token type of non fungible ESDT const NonFungibleESDT = "NonFungibleESDT" +// NonFungibleESDTv2 defines the string for the token type of non fungible ESDT +const NonFungibleESDTv2 = "NonFungibleESDTv2" + +// MetaESDT defines the string for the token type of meta ESDT +const MetaESDT = "MetaESDT" + // SemiFungibleESDT defines the string for the token type of semi fungible ESDT const SemiFungibleESDT = "SemiFungibleESDT" +// Dynamic is the prefix used for dynamic ESDT tokens +const Dynamic = "Dynamic" + +// DynamicNFTESDT defines the string for the token type of dynamic NFT ESDT +const DynamicNFTESDT = Dynamic + NonFungibleESDT + +// DynamicSFTESDT defines the string for the token type of dynamic SFT ESDT +const DynamicSFTESDT = Dynamic + SemiFungibleESDT + +// DynamicMetaESDT defines the string for the token type of dynamic meta ESDT +const DynamicMetaESDT = Dynamic + MetaESDT + // MaxRoyalty defines 100% as uint32 const MaxRoyalty = uint32(10000) diff --git a/core/converters.go b/core/converters.go index f3e39519..9f3d6dfa 100644 --- a/core/converters.go +++ b/core/converters.go @@ -177,3 +177,32 @@ func ConvertToEvenHexBigInt(value *big.Int) string { return str } + +// ConvertESDTTypeToUint32 converts the esdt type to uint32 +func ConvertESDTTypeToUint32(esdtType string) (uint32, error) { + switch esdtType { + case FungibleESDT: + return uint32(Fungible), nil + case NonFungibleESDT: + return uint32(NonFungible), nil + case NonFungibleESDTv2: + return uint32(NonFungibleV2), nil + case MetaESDT: + return uint32(MetaFungible), nil + case SemiFungibleESDT: + return uint32(SemiFungible), nil + case DynamicNFTESDT: + return uint32(DynamicNFT), nil + case DynamicSFTESDT: + return uint32(DynamicSFT), nil + case DynamicMetaESDT: + return uint32(DynamicMeta), nil + default: + return math.MaxUint32, fmt.Errorf("invalid esdt type: %s", esdtType) + } +} + +// IsDynamicESDT returns true if the esdt type is dynamic +func IsDynamicESDT(esdtType uint32) bool { + return esdtType == uint32(DynamicNFT) || esdtType == uint32(DynamicSFT) || esdtType == uint32(DynamicMeta) +} diff --git a/core/converters_test.go b/core/converters_test.go index dc095176..a6f75d3b 100644 --- a/core/converters_test.go +++ b/core/converters_test.go @@ -255,3 +255,56 @@ func TestConvertShardIDToUint32(t *testing.T) { assert.Error(t, err) assert.Equal(t, uint32(0), shardID) } + +func TestConvertESDTTypeToUint32(t *testing.T) { + t.Parallel() + + tokenTypeId, err := core.ConvertESDTTypeToUint32(core.FungibleESDT) + assert.Nil(t, err) + assert.Equal(t, uint32(core.Fungible), tokenTypeId) + + tokenTypeId, err = core.ConvertESDTTypeToUint32(core.NonFungibleESDT) + assert.Nil(t, err) + assert.Equal(t, uint32(core.NonFungible), tokenTypeId) + + tokenTypeId, err = core.ConvertESDTTypeToUint32(core.NonFungibleESDTv2) + assert.Nil(t, err) + assert.Equal(t, uint32(core.NonFungibleV2), tokenTypeId) + + tokenTypeId, err = core.ConvertESDTTypeToUint32(core.MetaESDT) + assert.Nil(t, err) + assert.Equal(t, uint32(core.MetaFungible), tokenTypeId) + + tokenTypeId, err = core.ConvertESDTTypeToUint32(core.SemiFungibleESDT) + assert.Nil(t, err) + assert.Equal(t, uint32(core.SemiFungible), tokenTypeId) + + tokenTypeId, err = core.ConvertESDTTypeToUint32(core.DynamicNFTESDT) + assert.Nil(t, err) + assert.Equal(t, uint32(core.DynamicNFT), tokenTypeId) + + tokenTypeId, err = core.ConvertESDTTypeToUint32(core.DynamicSFTESDT) + assert.Nil(t, err) + assert.Equal(t, uint32(core.DynamicSFT), tokenTypeId) + + tokenTypeId, err = core.ConvertESDTTypeToUint32(core.DynamicMetaESDT) + assert.Nil(t, err) + assert.Equal(t, uint32(core.DynamicMeta), tokenTypeId) + + tokenTypeId, err = core.ConvertESDTTypeToUint32("wrongType") + assert.NotNil(t, err) + assert.Equal(t, uint32(math.MaxUint32), tokenTypeId) +} + +func TestIsDynamicESDT(t *testing.T) { + t.Parallel() + + assert.True(t, core.IsDynamicESDT(uint32(core.DynamicNFT))) + assert.True(t, core.IsDynamicESDT(uint32(core.DynamicSFT))) + assert.True(t, core.IsDynamicESDT(uint32(core.DynamicMeta))) + assert.False(t, core.IsDynamicESDT(uint32(core.Fungible))) + assert.False(t, core.IsDynamicESDT(uint32(core.NonFungible))) + assert.False(t, core.IsDynamicESDT(uint32(core.NonFungibleV2))) + assert.False(t, core.IsDynamicESDT(uint32(core.SemiFungible))) + assert.False(t, core.IsDynamicESDT(uint32(core.MetaFungible))) +} diff --git a/data/alteredAccount/alteredAccount.pb.go b/data/alteredAccount/alteredAccount.pb.go index 231e1957..882eacef 100644 --- a/data/alteredAccount/alteredAccount.pb.go +++ b/data/alteredAccount/alteredAccount.pb.go @@ -104,6 +104,7 @@ type AccountTokenData struct { Properties string `protobuf:"bytes,4,opt,name=Properties,proto3" json:"properties"` MetaData *TokenMetaData `protobuf:"bytes,5,opt,name=MetaData,proto3" json:"metaData,omitempty"` AdditionalData *AdditionalAccountTokenData `protobuf:"bytes,6,opt,name=AdditionalData,proto3" json:"additionalData,omitempty"` + Type string `protobuf:"bytes,7,opt,name=Type,proto3" json:"type,omitempty"` } func (m *AccountTokenData) Reset() { *m = AccountTokenData{} } @@ -176,6 +177,13 @@ func (m *AccountTokenData) GetAdditionalData() *AdditionalAccountTokenData { return nil } +func (m *AccountTokenData) GetType() string { + if m != nil { + return m.Type + } + return "" +} + type TokenMetaData struct { Nonce uint64 `protobuf:"varint,1,opt,name=Nonce,proto3" json:"nonce"` Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"name"` @@ -408,58 +416,60 @@ func init() { func init() { proto.RegisterFile("alteredAccount.proto", fileDescriptor_804e04a1cde31bca) } var fileDescriptor_804e04a1cde31bca = []byte{ - // 810 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x95, 0xcd, 0x6a, 0xeb, 0x46, - 0x14, 0xc7, 0x2d, 0x7f, 0x7b, 0x9c, 0x98, 0x54, 0x24, 0xa9, 0x6b, 0x82, 0xe4, 0xba, 0x14, 0x0c, - 0xad, 0x6d, 0x48, 0x97, 0x81, 0x82, 0xe5, 0xb4, 0xc4, 0x85, 0xa6, 0x45, 0x4d, 0x16, 0xed, 0x6e, - 0x2c, 0x4d, 0x6c, 0x51, 0x4b, 0x63, 0x46, 0xa3, 0x7c, 0xec, 0x0a, 0xdd, 0x97, 0x3e, 0x46, 0xdf, - 0xa1, 0x2f, 0xd0, 0x65, 0x96, 0x59, 0x89, 0x46, 0xd9, 0x5c, 0x04, 0x17, 0xb2, 0xbd, 0xbb, 0xcb, - 0x1c, 0x49, 0xf6, 0x28, 0x1f, 0xf7, 0xae, 0x92, 0xf9, 0x9f, 0x73, 0xfe, 0xe7, 0xf8, 0x77, 0x66, - 0x6c, 0xb4, 0x8b, 0x97, 0x9c, 0x30, 0x62, 0x8f, 0x2d, 0x8b, 0x06, 0x1e, 0x1f, 0xae, 0x18, 0xe5, - 0x54, 0xad, 0xc0, 0x9f, 0xce, 0x60, 0xee, 0xf0, 0x45, 0x30, 0x1b, 0x5a, 0xd4, 0x1d, 0xcd, 0xe9, - 0x9c, 0x8e, 0x40, 0x9e, 0x05, 0x17, 0x70, 0x82, 0x03, 0xfc, 0x97, 0x54, 0xf5, 0xfe, 0x2d, 0xa2, - 0xd6, 0x38, 0x67, 0xa7, 0x7e, 0x89, 0x6a, 0x63, 0xdb, 0x66, 0xc4, 0xf7, 0xdb, 0x4a, 0x57, 0xe9, - 0x37, 0x8c, 0x66, 0x1c, 0xea, 0x35, 0x9c, 0x48, 0x66, 0x16, 0x53, 0x75, 0x54, 0x39, 0xa5, 0x9e, - 0x45, 0xda, 0xc5, 0xae, 0xd2, 0x2f, 0x1b, 0x8d, 0x38, 0xd4, 0x2b, 0x9e, 0x10, 0xcc, 0x44, 0x57, - 0x47, 0xa8, 0x66, 0xe0, 0x25, 0x16, 0x29, 0x25, 0xf0, 0xd9, 0x8b, 0x43, 0xfd, 0x93, 0x59, 0x22, - 0x7d, 0x4d, 0x5d, 0x87, 0x13, 0x77, 0xc5, 0x6f, 0xcc, 0x2c, 0x4b, 0xfd, 0x0e, 0x55, 0xcf, 0xe8, - 0xef, 0xc4, 0xf3, 0xdb, 0xe5, 0x6e, 0xa9, 0xdf, 0x3c, 0xfc, 0x34, 0x99, 0x71, 0x98, 0x0e, 0x06, - 0xb1, 0x63, 0xcc, 0xb1, 0xb1, 0x1b, 0x87, 0xfa, 0x0e, 0x87, 0x54, 0xc9, 0x27, 0x2d, 0x56, 0x1d, - 0xd4, 0x1a, 0xdb, 0xb6, 0xc3, 0x1d, 0xea, 0xe1, 0xa5, 0xc8, 0x6f, 0x57, 0xba, 0x4a, 0xbf, 0x79, - 0x78, 0x90, 0xd9, 0xad, 0x83, 0xa9, 0x31, 0x78, 0x7e, 0x11, 0x87, 0xba, 0x8e, 0x5f, 0x0a, 0x49, - 0x2d, 0x9e, 0x18, 0xf7, 0xde, 0x16, 0xd1, 0xce, 0xd3, 0xe9, 0x36, 0x60, 0x94, 0x57, 0xc0, 0x0c, - 0x11, 0x9a, 0xda, 0xc4, 0xe3, 0xce, 0x85, 0x43, 0x18, 0xe0, 0x6b, 0x18, 0xad, 0x38, 0xd4, 0x91, - 0xb3, 0x56, 0x4d, 0x29, 0x43, 0x2c, 0x24, 0x0f, 0x12, 0x16, 0x92, 0x82, 0xdc, 0xe0, 0x1b, 0x22, - 0xf4, 0x33, 0xa3, 0x2b, 0xc2, 0xb8, 0x43, 0x04, 0xc2, 0xb5, 0xed, 0x6a, 0xad, 0x9a, 0x52, 0x86, - 0x7a, 0x82, 0xea, 0x3f, 0x12, 0x8e, 0x25, 0x42, 0xbb, 0x29, 0x21, 0xf8, 0x2c, 0x59, 0xcc, 0xd8, - 0x8f, 0x43, 0x5d, 0x75, 0xd3, 0x93, 0x04, 0x63, 0x5d, 0xad, 0xce, 0x9f, 0x11, 0xaf, 0x82, 0xdf, - 0xe7, 0xaf, 0x11, 0xdf, 0xac, 0xf2, 0x20, 0x0e, 0xf5, 0x36, 0xce, 0x15, 0x7f, 0x80, 0xf7, 0x5f, - 0x45, 0xb4, 0x9d, 0x1b, 0xee, 0xe3, 0xb0, 0x0f, 0x50, 0xf9, 0x14, 0xbb, 0x24, 0xc5, 0x5c, 0x8f, - 0x43, 0xbd, 0xec, 0x61, 0x97, 0x98, 0xa0, 0x0a, 0xb4, 0x13, 0x46, 0x30, 0xa7, 0x4c, 0x46, 0x6b, - 0x25, 0x92, 0x99, 0xc5, 0xd4, 0xaf, 0x50, 0xc3, 0xa4, 0x37, 0x78, 0xb9, 0x26, 0xbb, 0x6d, 0x6c, - 0xc7, 0xa1, 0xde, 0x60, 0x99, 0x68, 0x6e, 0xe2, 0xa2, 0xe3, 0x09, 0xf6, 0x17, 0xc0, 0x74, 0x2b, - 0xe9, 0xb8, 0xc0, 0xfe, 0xc2, 0x04, 0x55, 0x44, 0xcf, 0xcd, 0xa9, 0xdf, 0xae, 0x76, 0x4b, 0x59, - 0x34, 0x60, 0x8e, 0x6f, 0x82, 0x2a, 0x76, 0x38, 0xe6, 0x9c, 0x39, 0xb3, 0x80, 0x13, 0xbf, 0x5d, - 0x03, 0x07, 0xd8, 0x21, 0x5e, 0xab, 0xa6, 0x94, 0xd1, 0xfb, 0x15, 0x75, 0x5e, 0x87, 0xab, 0x1e, - 0xa1, 0xe6, 0xd4, 0x3f, 0xfd, 0xfe, 0x0c, 0x3e, 0x46, 0x82, 0xa8, 0x6e, 0x7c, 0x16, 0x87, 0xfa, - 0x9e, 0xb3, 0x91, 0x25, 0xdc, 0x72, 0x76, 0xef, 0x5d, 0x09, 0xed, 0xbd, 0xf8, 0x54, 0xd4, 0x43, - 0x54, 0x9f, 0xfa, 0xbf, 0x10, 0xcf, 0x26, 0x2c, 0xf5, 0x84, 0x2b, 0xe2, 0xa4, 0x9a, 0x7c, 0x45, - 0xb2, 0x3c, 0xf5, 0x18, 0xb5, 0xd2, 0x7b, 0x3a, 0x59, 0x60, 0x6f, 0x4e, 0x6c, 0x58, 0x48, 0x3d, - 0xd9, 0xff, 0x2c, 0x17, 0x91, 0xf7, 0x9f, 0xaf, 0x51, 0xbf, 0x45, 0x5b, 0x93, 0x80, 0x31, 0xe2, - 0xf1, 0x9f, 0xae, 0x3c, 0x92, 0xed, 0xac, 0x13, 0x87, 0xfa, 0xbe, 0x25, 0xe9, 0x92, 0x43, 0x2e, - 0x5f, 0x4c, 0x7e, 0xee, 0x13, 0x06, 0x17, 0x22, 0x79, 0x20, 0x30, 0x79, 0x90, 0x6a, 0xf2, 0xe4, - 0x59, 0x9e, 0xfa, 0x03, 0xda, 0x39, 0x26, 0x97, 0x64, 0x29, 0xde, 0x8d, 0x49, 0xae, 0x30, 0xb3, - 0x7d, 0x58, 0x6d, 0xc3, 0xd0, 0xe2, 0x50, 0xef, 0xd8, 0x4f, 0x62, 0x92, 0xc7, 0xb3, 0x3a, 0xd1, - 0x7f, 0x42, 0x6d, 0x02, 0xd7, 0xa3, 0x0a, 0xcb, 0x85, 0xfe, 0x56, 0xaa, 0xc9, 0xfd, 0xb3, 0x3c, - 0x51, 0x63, 0x52, 0xca, 0xa1, 0xa6, 0xb6, 0xa9, 0x61, 0xa9, 0x26, 0xd7, 0x64, 0x79, 0xc0, 0x89, - 0xda, 0x44, 0xbc, 0x12, 0x5b, 0x3c, 0xc7, 0x3a, 0xd4, 0x25, 0x9c, 0x24, 0x3d, 0xc7, 0x49, 0xd2, - 0x8d, 0x3f, 0x95, 0xdb, 0x7b, 0xad, 0x70, 0x77, 0xaf, 0x15, 0x1e, 0xef, 0x35, 0xe5, 0x8f, 0x48, - 0x53, 0xfe, 0x89, 0x34, 0xe5, 0xbf, 0x48, 0x53, 0x6e, 0x23, 0x4d, 0xb9, 0x8b, 0x34, 0xe5, 0xff, - 0x48, 0x53, 0xde, 0x44, 0x5a, 0xe1, 0x31, 0xd2, 0x94, 0xbf, 0x1f, 0xb4, 0xc2, 0xed, 0x83, 0x56, - 0xb8, 0x7b, 0xd0, 0x0a, 0xbf, 0x4d, 0xa5, 0xdf, 0x1f, 0x37, 0x58, 0x72, 0xe7, 0x92, 0x30, 0xff, - 0x7a, 0xe4, 0x5e, 0x0f, 0xac, 0x05, 0x76, 0xbc, 0x81, 0x45, 0x19, 0x19, 0xcc, 0xe9, 0x48, 0xf4, - 0x19, 0xe5, 0x7f, 0xc8, 0x8e, 0xf2, 0xc7, 0x59, 0x15, 0xbe, 0x3d, 0xbe, 0x79, 0x1f, 0x00, 0x00, - 0xff, 0xff, 0xf3, 0xb4, 0x64, 0x47, 0xf0, 0x06, 0x00, 0x00, + // 833 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0x4d, 0x6f, 0xe3, 0x44, + 0x18, 0x8e, 0x9b, 0x34, 0x1f, 0xd3, 0x36, 0x2a, 0xa3, 0x76, 0x09, 0x51, 0xe5, 0x09, 0x41, 0xa0, + 0x48, 0x90, 0x44, 0x2a, 0xc7, 0x95, 0x90, 0xe2, 0x14, 0xb4, 0x41, 0xa2, 0x20, 0xd3, 0x3d, 0xc0, + 0x6d, 0x62, 0xcf, 0x26, 0x16, 0xb1, 0x27, 0x1a, 0x8f, 0x77, 0x37, 0x37, 0x24, 0xee, 0x88, 0x0b, + 0xff, 0x81, 0xff, 0xc0, 0x1f, 0xe0, 0xd8, 0x63, 0x4f, 0x16, 0x75, 0x2f, 0xc8, 0xa7, 0xbd, 0x72, + 0x43, 0xf3, 0xda, 0x4e, 0xc6, 0xdd, 0x8d, 0x38, 0xb5, 0xf3, 0xbc, 0xcf, 0xfb, 0x31, 0xcf, 0xf3, + 0x4e, 0x8c, 0xce, 0xe8, 0x4a, 0x32, 0xc1, 0xdc, 0x89, 0xe3, 0xf0, 0x28, 0x90, 0xa3, 0xb5, 0xe0, + 0x92, 0xe3, 0x43, 0xf8, 0xd3, 0x1d, 0x2e, 0x3c, 0xb9, 0x8c, 0xe6, 0x23, 0x87, 0xfb, 0xe3, 0x05, + 0x5f, 0xf0, 0x31, 0xc0, 0xf3, 0xe8, 0x05, 0x9c, 0xe0, 0x00, 0xff, 0x65, 0x59, 0xfd, 0x3f, 0x0f, + 0x50, 0x7b, 0x52, 0x2a, 0x87, 0x3f, 0x46, 0x8d, 0x89, 0xeb, 0x0a, 0x16, 0x86, 0x1d, 0xa3, 0x67, + 0x0c, 0x5a, 0xd6, 0x51, 0x1a, 0x93, 0x06, 0xcd, 0x20, 0xbb, 0x88, 0x61, 0x82, 0x0e, 0xaf, 0x79, + 0xe0, 0xb0, 0xce, 0x41, 0xcf, 0x18, 0xd4, 0xac, 0x56, 0x1a, 0x93, 0xc3, 0x40, 0x01, 0x76, 0x86, + 0xe3, 0x31, 0x6a, 0x58, 0x74, 0x45, 0x15, 0xa5, 0x0a, 0x75, 0xce, 0xd3, 0x98, 0xbc, 0x37, 0xcf, + 0xa0, 0xcf, 0xb8, 0xef, 0x49, 0xe6, 0xaf, 0xe5, 0xc6, 0x2e, 0x58, 0xf8, 0x4b, 0x54, 0xbf, 0xe1, + 0x3f, 0xb1, 0x20, 0xec, 0xd4, 0x7a, 0xd5, 0xc1, 0xd1, 0xe5, 0xfb, 0xd9, 0x8c, 0xa3, 0x7c, 0x30, + 0x88, 0x5d, 0x51, 0x49, 0xad, 0xb3, 0x34, 0x26, 0xa7, 0x12, 0xa8, 0x5a, 0x9d, 0x3c, 0x19, 0x7b, + 0xa8, 0x3d, 0x71, 0x5d, 0x4f, 0x7a, 0x3c, 0xa0, 0x2b, 0xc5, 0xef, 0x1c, 0xf6, 0x8c, 0xc1, 0xd1, + 0xe5, 0x45, 0x51, 0x6e, 0x1b, 0xcc, 0x0b, 0x43, 0xcd, 0x8f, 0xd2, 0x98, 0x10, 0xfa, 0xae, 0x90, + 0xd6, 0xe2, 0x51, 0xe1, 0xfe, 0xef, 0x55, 0x74, 0xfa, 0x78, 0xba, 0x9d, 0x30, 0xc6, 0x1e, 0x61, + 0x46, 0x08, 0xcd, 0x5c, 0x16, 0x48, 0xef, 0x85, 0xc7, 0x04, 0xc8, 0xd7, 0xb2, 0xda, 0x69, 0x4c, + 0x90, 0xb7, 0x45, 0x6d, 0x8d, 0xa1, 0x0c, 0x29, 0x0b, 0x09, 0x86, 0xe4, 0x42, 0xee, 0xe4, 0x1b, + 0x21, 0xf4, 0x9d, 0xe0, 0x6b, 0x26, 0xa4, 0xc7, 0x94, 0x84, 0xdb, 0xb2, 0xeb, 0x2d, 0x6a, 0x6b, + 0x0c, 0xfc, 0x0c, 0x35, 0xbf, 0x61, 0x92, 0x6a, 0x0a, 0x9d, 0xe5, 0x0a, 0xc1, 0x5d, 0x8a, 0x98, + 0xf5, 0x24, 0x8d, 0x09, 0xf6, 0xf3, 0x93, 0x26, 0xc6, 0x36, 0x1b, 0x2f, 0xde, 0x52, 0xbc, 0x0e, + 0xf5, 0x3e, 0xdc, 0xa7, 0xf8, 0xce, 0xca, 0x8b, 0x34, 0x26, 0x1d, 0x5a, 0x4a, 0xde, 0xaf, 0x37, + 0xfe, 0x04, 0xd5, 0x6e, 0x36, 0x6b, 0xd6, 0x69, 0xc0, 0xe5, 0x70, 0x1a, 0x93, 0xb6, 0xdc, 0xac, + 0xf5, 0x65, 0x82, 0x78, 0xff, 0xd7, 0x03, 0x74, 0x52, 0xba, 0xc4, 0xff, 0x9b, 0x72, 0x81, 0x6a, + 0xd7, 0xd4, 0x67, 0xb9, 0x1d, 0xcd, 0x34, 0x26, 0xb5, 0x80, 0xfa, 0xcc, 0x06, 0x54, 0x59, 0x30, + 0x15, 0x8c, 0x4a, 0x2e, 0x74, 0x0b, 0x9c, 0x0c, 0xb2, 0x8b, 0x18, 0xfe, 0x14, 0xb5, 0x6c, 0xbe, + 0xa1, 0xab, 0xad, 0x03, 0x27, 0xd6, 0x49, 0x1a, 0x93, 0x96, 0x28, 0x40, 0x7b, 0x17, 0x57, 0x1d, + 0x9f, 0xd1, 0x70, 0x09, 0xda, 0x1f, 0x67, 0x1d, 0x97, 0x34, 0x5c, 0xda, 0x80, 0xaa, 0xe8, 0x73, + 0x7b, 0x16, 0x76, 0xea, 0xbd, 0x6a, 0x11, 0x8d, 0x84, 0x17, 0xda, 0x80, 0x2a, 0xaf, 0x27, 0x52, + 0x0a, 0x6f, 0x1e, 0x49, 0x16, 0x82, 0x1c, 0xc7, 0x99, 0xd7, 0x74, 0x8b, 0xda, 0x1a, 0xa3, 0xff, + 0x03, 0xea, 0xee, 0x37, 0x01, 0x3f, 0x45, 0x47, 0xb3, 0xf0, 0xfa, 0xab, 0x1b, 0xb8, 0x46, 0x26, + 0x51, 0xd3, 0xfa, 0x20, 0x8d, 0xc9, 0xb9, 0xb7, 0x83, 0x35, 0x91, 0x75, 0x76, 0xff, 0xdf, 0x2a, + 0x3a, 0x7f, 0xe7, 0x93, 0xc2, 0x97, 0xa8, 0x39, 0x0b, 0xbf, 0x67, 0x81, 0xcb, 0x44, 0x5e, 0x13, + 0x56, 0xc9, 0xcb, 0x31, 0x7d, 0x95, 0x0a, 0x1e, 0xbe, 0x42, 0xed, 0x7c, 0x9f, 0xa7, 0x4b, 0x1a, + 0x2c, 0x98, 0x0b, 0x86, 0x34, 0xb3, 0x3d, 0x99, 0x97, 0x22, 0xfa, 0x9e, 0x94, 0x73, 0xf0, 0x17, + 0xe8, 0x78, 0x1a, 0x09, 0xc1, 0x02, 0xf9, 0xed, 0xab, 0x80, 0x15, 0x9e, 0x75, 0xd3, 0x98, 0x3c, + 0x71, 0x34, 0x5c, 0xab, 0x50, 0xe2, 0xab, 0xc9, 0x9f, 0x87, 0x4c, 0xc0, 0x42, 0x64, 0x0f, 0x09, + 0x26, 0x8f, 0x72, 0x4c, 0x9f, 0xbc, 0xe0, 0xe1, 0xaf, 0xd1, 0xe9, 0x15, 0x7b, 0xc9, 0x56, 0xea, + 0x7d, 0xd9, 0xec, 0x15, 0x15, 0x6e, 0x08, 0xd6, 0xb6, 0x2c, 0x33, 0x8d, 0x49, 0xd7, 0x7d, 0x14, + 0xd3, 0x6a, 0xbc, 0x95, 0xa7, 0xfa, 0x4f, 0xb9, 0xcb, 0x60, 0x3d, 0xea, 0x60, 0x2e, 0xf4, 0x77, + 0x72, 0x4c, 0xef, 0x5f, 0xf0, 0x54, 0x8e, 0xcd, 0xb9, 0x84, 0x9c, 0xc6, 0x2e, 0x47, 0xe4, 0x98, + 0x9e, 0x53, 0xf0, 0x40, 0x27, 0xee, 0x32, 0xf5, 0x4a, 0x5c, 0xf5, 0x6c, 0x9b, 0x90, 0x97, 0xe9, + 0xa4, 0xe1, 0x25, 0x9d, 0x34, 0xdc, 0xfa, 0xc5, 0xb8, 0xbd, 0x37, 0x2b, 0x77, 0xf7, 0x66, 0xe5, + 0xcd, 0xbd, 0x69, 0xfc, 0x9c, 0x98, 0xc6, 0x1f, 0x89, 0x69, 0xfc, 0x95, 0x98, 0xc6, 0x6d, 0x62, + 0x1a, 0x77, 0x89, 0x69, 0xfc, 0x9d, 0x98, 0xc6, 0x3f, 0x89, 0x59, 0x79, 0x93, 0x98, 0xc6, 0x6f, + 0x0f, 0x66, 0xe5, 0xf6, 0xc1, 0xac, 0xdc, 0x3d, 0x98, 0x95, 0x1f, 0x67, 0xda, 0x77, 0xca, 0x8f, + 0x56, 0xd2, 0x7b, 0xc9, 0x44, 0xf8, 0x7a, 0xec, 0xbf, 0x1e, 0x3a, 0x4b, 0xea, 0x05, 0x43, 0x87, + 0x0b, 0x36, 0x5c, 0xf0, 0xb1, 0xea, 0x33, 0x2e, 0x7f, 0xf0, 0x9e, 0x96, 0x8f, 0xf3, 0x3a, 0xfc, + 0xca, 0x7c, 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbe, 0xdc, 0x2f, 0xaa, 0x18, 0x07, 0x00, + 0x00, } func (this *AlteredAccount) Equal(that interface{}) bool { @@ -540,6 +550,9 @@ func (this *AccountTokenData) Equal(that interface{}) bool { if !this.AdditionalData.Equal(that1.AdditionalData) { return false } + if this.Type != that1.Type { + return false + } return true } func (this *TokenMetaData) Equal(that interface{}) bool { @@ -680,7 +693,7 @@ func (this *AccountTokenData) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 10) + s := make([]string, 0, 11) s = append(s, "&alteredAccount.AccountTokenData{") s = append(s, "Nonce: "+fmt.Sprintf("%#v", this.Nonce)+",\n") s = append(s, "Identifier: "+fmt.Sprintf("%#v", this.Identifier)+",\n") @@ -692,6 +705,7 @@ func (this *AccountTokenData) GoString() string { if this.AdditionalData != nil { s = append(s, "AdditionalData: "+fmt.Sprintf("%#v", this.AdditionalData)+",\n") } + s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -834,6 +848,13 @@ func (m *AccountTokenData) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintAlteredAccount(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0x3a + } if m.AdditionalData != nil { { size, err := m.AdditionalData.MarshalToSizedBuffer(dAtA[:i]) @@ -1145,6 +1166,10 @@ func (m *AccountTokenData) Size() (n int) { l = m.AdditionalData.Size() n += 1 + l + sovAlteredAccount(uint64(l)) } + l = len(m.Type) + if l > 0 { + n += 1 + l + sovAlteredAccount(uint64(l)) + } return n } @@ -1272,6 +1297,7 @@ func (this *AccountTokenData) String() string { `Properties:` + fmt.Sprintf("%v", this.Properties) + `,`, `MetaData:` + strings.Replace(this.MetaData.String(), "TokenMetaData", "TokenMetaData", 1) + `,`, `AdditionalData:` + strings.Replace(this.AdditionalData.String(), "AdditionalAccountTokenData", "AdditionalAccountTokenData", 1) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `}`, }, "") return s @@ -1749,6 +1775,38 @@ func (m *AccountTokenData) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAlteredAccount + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAlteredAccount + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAlteredAccount + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAlteredAccount(dAtA[iNdEx:]) diff --git a/data/alteredAccount/alteredAccount.proto b/data/alteredAccount/alteredAccount.proto index 08e6c0af..01242c11 100644 --- a/data/alteredAccount/alteredAccount.proto +++ b/data/alteredAccount/alteredAccount.proto @@ -22,6 +22,7 @@ message AccountTokenData { string Properties = 4 [(gogoproto.jsontag) = "properties"]; TokenMetaData MetaData = 5 [(gogoproto.jsontag) = "metaData,omitempty"]; AdditionalAccountTokenData AdditionalData = 6 [(gogoproto.jsontag) = "additionalData,omitempty"]; + string Type = 7 [(gogoproto.jsontag) = "type,omitempty"]; } message TokenMetaData { diff --git a/data/block/block.go b/data/block/block.go index 8a32462d..b1b305a8 100644 --- a/data/block/block.go +++ b/data/block/block.go @@ -14,8 +14,7 @@ var _ = data.HeaderHandler(&Header{}) var _ = data.ShardHeaderHandler(&Header{}) // MiniBlockSlice should be used when referring to subset of mini blocks that is not -// -// necessarily representing a full block body +// necessarily representing a full block body type MiniBlockSlice []*MiniBlock // MiniblockAndHash holds the info related to a miniblock and its hash diff --git a/data/esdt/common.go b/data/esdt/common.go new file mode 100644 index 00000000..d2467ec4 --- /dev/null +++ b/data/esdt/common.go @@ -0,0 +1,85 @@ +package esdt + +import "strings" + +const ( + // esdtTickerNumRandChars represents the number of hex-encoded random characters sequence of a ticker + esdtTickerNumRandChars = 6 + // separatorChar represents the character that separated the token ticker by the random sequence + separatorChar = "-" + // minLengthForTickerName represents the minimum number of characters a token's ticker can have + minLengthForTickerName = 3 + // maxLengthForTickerName represents the maximum number of characters a token's ticker can have + maxLengthForTickerName = 10 + // maxLengthESDTPrefix represents the maximum number of characters a token's prefix can have + maxLengthESDTPrefix = 4 + // minLengthESDTPrefix represents the minimum number of characters a token's prefix can have + minLengthESDTPrefix = 1 +) + +// IsValidPrefixedToken checks if the provided token is valid, and returns if prefix if so +func IsValidPrefixedToken(token string) (string, bool) { + tokenSplit := strings.Split(token, separatorChar) + if len(tokenSplit) < 3 { + return "", false + } + + prefix := tokenSplit[0] + if !IsValidTokenPrefix(prefix) { + return "", false + } + + tokenTicker := tokenSplit[1] + if !IsTickerValid(tokenTicker) { + return "", false + } + + tokenRandSeq := tokenSplit[2] + if !(len(tokenRandSeq) >= esdtTickerNumRandChars) { + return "", false + } + + return prefix, true +} + +// IsValidTokenPrefix checks if the token prefix is valid +func IsValidTokenPrefix(prefix string) bool { + prefixLen := len(prefix) + if prefixLen > maxLengthESDTPrefix || prefixLen < minLengthESDTPrefix { + return false + } + + for _, ch := range prefix { + isLowerCaseCharacter := ch >= 'a' && ch <= 'z' + isNumber := ch >= '0' && ch <= '9' + isAllowedChar := isLowerCaseCharacter || isNumber + if !isAllowedChar { + return false + } + } + + return true +} + +// IsTickerValid checks if the token ticker is valid +func IsTickerValid(ticker string) bool { + if !IsTokenTickerLenCorrect(len(ticker)) { + return false + } + + for _, ch := range ticker { + isUpperCaseCharacter := ch >= 'A' && ch <= 'Z' + isNumber := ch >= '0' && ch <= '9' + isAllowedChar := isUpperCaseCharacter || isNumber + if !isAllowedChar { + return false + } + } + + return true +} + +// IsTokenTickerLenCorrect checks if the token ticker len is correct +func IsTokenTickerLenCorrect(tokenTickerLen int) bool { + return !(tokenTickerLen < minLengthForTickerName || tokenTickerLen > maxLengthForTickerName) +} diff --git a/data/esdt/common_test.go b/data/esdt/common_test.go new file mode 100644 index 00000000..8052c23a --- /dev/null +++ b/data/esdt/common_test.go @@ -0,0 +1,62 @@ +package esdt + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestIsValidPrefixedToken(t *testing.T) { + prefix, valid := IsValidPrefixedToken("sov1-TKN-coffee") + require.True(t, valid) + require.Equal(t, "sov1", prefix) + + prefix, valid = IsValidPrefixedToken("sOv1-TKN-coffee") + require.False(t, valid) + require.Equal(t, "", prefix) + + prefix, valid = IsValidPrefixedToken("sov1-TkN-coffee") + require.False(t, valid) + require.Equal(t, "", prefix) + + prefix, valid = IsValidPrefixedToken("sov1-TKN-coffe") + require.False(t, valid) + require.Equal(t, "", prefix) + + prefix, valid = IsValidPrefixedToken("sov1-TKN") + require.False(t, valid) + require.Equal(t, "", prefix) + + prefix, valid = IsValidPrefixedToken("TKN-coffee") + require.False(t, valid) + require.Equal(t, "", prefix) +} + +func TestIsValidTokenPrefix(t *testing.T) { + require.False(t, IsValidTokenPrefix("")) + require.False(t, IsValidTokenPrefix("-")) + require.False(t, IsValidTokenPrefix("prefix")) + require.False(t, IsValidTokenPrefix("prefi")) + require.False(t, IsValidTokenPrefix("Prfx")) + require.False(t, IsValidTokenPrefix("pX4")) + require.False(t, IsValidTokenPrefix("px-4")) + + require.True(t, IsValidTokenPrefix("pref")) + require.True(t, IsValidTokenPrefix("sv1")) +} + +func TestIsTickerValid(t *testing.T) { + require.False(t, IsTickerValid("TK")) + require.False(t, IsTickerValid("TKn")) + require.False(t, IsTickerValid("T0KEN-")) + + require.True(t, IsTickerValid("T0KEN")) +} + +func TestIsTokenTickerLenCorrect(t *testing.T) { + require.False(t, IsTokenTickerLenCorrect(len("TOKENALICEALICE"))) + require.False(t, IsTokenTickerLenCorrect(len("AL"))) + + require.True(t, IsTokenTickerLenCorrect(len("ALC"))) + require.True(t, IsTokenTickerLenCorrect(len("ALICE"))) +} diff --git a/data/esdt/esdt.pb.go b/data/esdt/esdt.pb.go index 64f66dd3..7512924b 100644 --- a/data/esdt/esdt.pb.go +++ b/data/esdt/esdt.pb.go @@ -228,48 +228,131 @@ func (m *MetaData) GetAttributes() []byte { return nil } +type MetaDataVersion struct { + Name uint64 `protobuf:"varint,1,opt,name=Name,proto3" json:"Name"` + Creator uint64 `protobuf:"varint,2,opt,name=Creator,proto3" json:"Creator"` + Royalties uint64 `protobuf:"varint,3,opt,name=Royalties,proto3" json:"Royalties"` + Hash uint64 `protobuf:"varint,4,opt,name=Hash,proto3" json:"Hash"` + URIs uint64 `protobuf:"varint,5,opt,name=URIs,proto3" json:"URIs"` + Attributes uint64 `protobuf:"varint,6,opt,name=Attributes,proto3" json:"Attributes"` +} + +func (m *MetaDataVersion) Reset() { *m = MetaDataVersion{} } +func (*MetaDataVersion) ProtoMessage() {} +func (*MetaDataVersion) Descriptor() ([]byte, []int) { + return fileDescriptor_e413e402abc6a34c, []int{3} +} +func (m *MetaDataVersion) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MetaDataVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *MetaDataVersion) XXX_Merge(src proto.Message) { + xxx_messageInfo_MetaDataVersion.Merge(m, src) +} +func (m *MetaDataVersion) XXX_Size() int { + return m.Size() +} +func (m *MetaDataVersion) XXX_DiscardUnknown() { + xxx_messageInfo_MetaDataVersion.DiscardUnknown(m) +} + +var xxx_messageInfo_MetaDataVersion proto.InternalMessageInfo + +func (m *MetaDataVersion) GetName() uint64 { + if m != nil { + return m.Name + } + return 0 +} + +func (m *MetaDataVersion) GetCreator() uint64 { + if m != nil { + return m.Creator + } + return 0 +} + +func (m *MetaDataVersion) GetRoyalties() uint64 { + if m != nil { + return m.Royalties + } + return 0 +} + +func (m *MetaDataVersion) GetHash() uint64 { + if m != nil { + return m.Hash + } + return 0 +} + +func (m *MetaDataVersion) GetURIs() uint64 { + if m != nil { + return m.URIs + } + return 0 +} + +func (m *MetaDataVersion) GetAttributes() uint64 { + if m != nil { + return m.Attributes + } + return 0 +} + func init() { proto.RegisterType((*ESDigitalToken)(nil), "protoBuiltInFunctions.ESDigitalToken") proto.RegisterType((*ESDTRoles)(nil), "protoBuiltInFunctions.ESDTRoles") proto.RegisterType((*MetaData)(nil), "protoBuiltInFunctions.MetaData") + proto.RegisterType((*MetaDataVersion)(nil), "protoBuiltInFunctions.MetaDataVersion") } func init() { proto.RegisterFile("esdt.proto", fileDescriptor_e413e402abc6a34c) } var fileDescriptor_e413e402abc6a34c = []byte{ - // 513 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x41, 0x8b, 0xd3, 0x40, - 0x14, 0xce, 0x74, 0xdb, 0xdd, 0x76, 0xb6, 0xdd, 0x43, 0x40, 0x08, 0x22, 0x93, 0x52, 0x10, 0x0a, - 0xda, 0x14, 0xf4, 0x28, 0x08, 0x66, 0x5b, 0xb1, 0x07, 0x17, 0x99, 0x56, 0x0f, 0xde, 0xa6, 0xed, - 0x98, 0x0e, 0xa6, 0x99, 0x32, 0x99, 0x2c, 0xbb, 0x37, 0xaf, 0xde, 0xfc, 0x19, 0xe2, 0x1f, 0xd1, - 0x63, 0x8f, 0x3d, 0x45, 0x9b, 0x5e, 0x24, 0xa7, 0xfd, 0x09, 0x32, 0x2f, 0x9b, 0x6d, 0x85, 0xbd, - 0xbc, 0x7c, 0xdf, 0x37, 0x8f, 0x79, 0xf3, 0xbe, 0x8f, 0x60, 0xcc, 0xe3, 0xb9, 0xf6, 0x56, 0x4a, - 0x6a, 0x69, 0x3f, 0x80, 0x8f, 0x9f, 0x88, 0x50, 0x8f, 0xa2, 0xd7, 0x49, 0x34, 0xd3, 0x42, 0x46, - 0xf1, 0xc3, 0x5e, 0x20, 0xf4, 0x22, 0x99, 0x7a, 0x33, 0xb9, 0xec, 0x07, 0x32, 0x90, 0x7d, 0x68, - 0x9b, 0x26, 0x9f, 0x80, 0x01, 0x01, 0x54, 0xdc, 0xd2, 0xf9, 0x59, 0xc1, 0x67, 0xc3, 0xf1, 0x40, - 0x04, 0x42, 0xb3, 0x70, 0x22, 0x3f, 0xf3, 0xc8, 0x7e, 0x84, 0xab, 0x93, 0xeb, 0x15, 0x77, 0x50, - 0x1b, 0x75, 0x5b, 0x7e, 0x3d, 0x4f, 0x5d, 0xe0, 0x14, 0xaa, 0xbd, 0xc0, 0xb5, 0x0f, 0x2c, 0x4c, - 0xb8, 0x53, 0x69, 0xa3, 0x6e, 0xd3, 0xa7, 0x79, 0xea, 0x16, 0xc2, 0x8f, 0xdf, 0xee, 0x70, 0xc9, - 0xf4, 0xa2, 0x3f, 0x15, 0x81, 0x37, 0x8a, 0xf4, 0x8b, 0x83, 0x87, 0x2c, 0x93, 0x50, 0x8b, 0x4b, - 0xae, 0xe2, 0xab, 0xfe, 0xf2, 0xaa, 0x37, 0x5b, 0x30, 0x11, 0xf5, 0x66, 0x52, 0xf1, 0x5e, 0x20, - 0xfb, 0x73, 0xa6, 0x99, 0xe7, 0x8b, 0x60, 0x14, 0xe9, 0x73, 0x16, 0x6b, 0xae, 0x68, 0x71, 0x9f, - 0xed, 0x61, 0xfc, 0x4e, 0xc9, 0x15, 0x57, 0x5a, 0xf0, 0xd8, 0x39, 0x82, 0x71, 0x67, 0x79, 0xea, - 0x1e, 0xa8, 0xf4, 0x00, 0xdb, 0x63, 0xdc, 0x82, 0x05, 0xde, 0x72, 0xcd, 0x06, 0x4c, 0x33, 0xa7, - 0xda, 0x46, 0xdd, 0xd3, 0x67, 0xae, 0x77, 0xaf, 0x51, 0x5e, 0xd9, 0xe6, 0x37, 0xf3, 0xd4, 0xad, - 0x97, 0x8c, 0xfe, 0x7f, 0x87, 0xdd, 0xc5, 0x75, 0xca, 0x63, 0xae, 0x2e, 0xf9, 0xdc, 0xa9, 0xc1, - 0x13, 0xa0, 0xbd, 0xd4, 0xe8, 0x1d, 0xea, 0x3c, 0xc5, 0x8d, 0xe1, 0x78, 0x30, 0xa1, 0x32, 0xe4, - 0xb1, 0xed, 0xe2, 0x1a, 0x00, 0x07, 0xb5, 0x8f, 0xba, 0x4d, 0xbf, 0x61, 0x5c, 0x52, 0x46, 0xa0, - 0x85, 0xde, 0xf9, 0x5a, 0xc1, 0x77, 0x33, 0x4d, 0xf7, 0x85, 0x8c, 0x66, 0x85, 0xe5, 0xd5, 0xa2, - 0x1b, 0x04, 0x5a, 0x7c, 0x4c, 0x24, 0x17, 0x6c, 0x59, 0x7a, 0x0e, 0x91, 0x18, 0x4e, 0xa1, 0xda, - 0x8f, 0xf1, 0xc9, 0xb9, 0xe2, 0x4c, 0x4b, 0x75, 0xeb, 0xd2, 0x69, 0x9e, 0xba, 0xa5, 0x44, 0x4b, - 0x60, 0x3f, 0xc1, 0x0d, 0x2a, 0xaf, 0x59, 0x08, 0x76, 0x56, 0x21, 0xdc, 0x56, 0x9e, 0xba, 0x7b, - 0x91, 0xee, 0xa1, 0x99, 0xf8, 0x86, 0xc5, 0x8b, 0xdb, 0x9d, 0x61, 0xa2, 0xe1, 0x14, 0xaa, 0x39, - 0x7d, 0x4f, 0x47, 0xb1, 0x73, 0x0c, 0xdb, 0xc1, 0xa9, 0xe1, 0x14, 0xaa, 0x09, 0xee, 0x95, 0xd6, - 0x4a, 0x4c, 0x13, 0xcd, 0x63, 0xe7, 0x64, 0x1f, 0xdc, 0x5e, 0xa5, 0x07, 0xd8, 0x7f, 0xb9, 0xde, - 0x12, 0x6b, 0xb3, 0x25, 0xd6, 0xcd, 0x96, 0xa0, 0x2f, 0x19, 0x41, 0xdf, 0x33, 0x82, 0x7e, 0x65, - 0x04, 0xad, 0x33, 0x82, 0x36, 0x19, 0x41, 0x7f, 0x32, 0x82, 0xfe, 0x66, 0xc4, 0xba, 0xc9, 0x08, - 0xfa, 0xb6, 0x23, 0xd6, 0x7a, 0x47, 0xac, 0xcd, 0x8e, 0x58, 0x1f, 0xab, 0xe6, 0x7f, 0x98, 0x1e, - 0x43, 0xc0, 0xcf, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x8c, 0x59, 0x17, 0x1e, 0x03, 0x00, + // 561 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcf, 0x8b, 0xd3, 0x40, + 0x14, 0xce, 0x74, 0xd3, 0xfd, 0x31, 0xfb, 0x43, 0x08, 0x08, 0x41, 0x64, 0x52, 0x0a, 0x42, 0x41, + 0x9b, 0x82, 0x1e, 0x05, 0xc1, 0xec, 0x56, 0xec, 0xc1, 0x45, 0xa6, 0x75, 0x0f, 0xde, 0xa6, 0xed, + 0x98, 0x0e, 0xa6, 0x99, 0x32, 0x99, 0x2c, 0xbb, 0x37, 0xaf, 0xde, 0xfc, 0x33, 0xc4, 0x7f, 0x44, + 0x8f, 0x3d, 0xf6, 0x14, 0x6d, 0x7a, 0x91, 0x5c, 0xdc, 0x3f, 0x41, 0xf2, 0xb2, 0x69, 0x2a, 0xac, + 0xab, 0x97, 0x97, 0xf7, 0x7d, 0xf3, 0x31, 0x6f, 0xbe, 0xef, 0x95, 0x62, 0xcc, 0xa3, 0xb1, 0x76, + 0x67, 0x4a, 0x6a, 0x69, 0xdd, 0x85, 0x8f, 0x17, 0x8b, 0x40, 0xf7, 0xc2, 0x17, 0x71, 0x38, 0xd2, + 0x42, 0x86, 0xd1, 0xbd, 0xb6, 0x2f, 0xf4, 0x24, 0x1e, 0xba, 0x23, 0x39, 0xed, 0xf8, 0xd2, 0x97, + 0x1d, 0x90, 0x0d, 0xe3, 0x77, 0x80, 0x00, 0x40, 0x57, 0xdc, 0xd2, 0xfc, 0x5a, 0xc3, 0x47, 0xdd, + 0xfe, 0x89, 0xf0, 0x85, 0x66, 0xc1, 0x40, 0xbe, 0xe7, 0xa1, 0x75, 0x1f, 0x9b, 0x83, 0xcb, 0x19, + 0xb7, 0x51, 0x03, 0xb5, 0x0e, 0xbd, 0xdd, 0x2c, 0x71, 0x00, 0x53, 0xa8, 0xd6, 0x04, 0xd7, 0xcf, + 0x58, 0x10, 0x73, 0xbb, 0xd6, 0x40, 0xad, 0x03, 0x8f, 0x66, 0x89, 0x53, 0x10, 0x5f, 0xbe, 0x3b, + 0xdd, 0x29, 0xd3, 0x93, 0xce, 0x50, 0xf8, 0x6e, 0x2f, 0xd4, 0x4f, 0x37, 0x1e, 0x32, 0x8d, 0x03, + 0x2d, 0xce, 0xb9, 0x8a, 0x2e, 0x3a, 0xd3, 0x8b, 0xf6, 0x68, 0xc2, 0x44, 0xd8, 0x1e, 0x49, 0xc5, + 0xdb, 0xbe, 0xec, 0x8c, 0x99, 0x66, 0xae, 0x27, 0xfc, 0x5e, 0xa8, 0x8f, 0x59, 0xa4, 0xb9, 0xa2, + 0xc5, 0x7d, 0x96, 0x8b, 0xf1, 0x6b, 0x25, 0x67, 0x5c, 0x69, 0xc1, 0x23, 0x7b, 0x0b, 0xc6, 0x1d, + 0x65, 0x89, 0xb3, 0xc1, 0xd2, 0x8d, 0xde, 0xea, 0xe3, 0x43, 0x30, 0xf0, 0x8a, 0x6b, 0x76, 0xc2, + 0x34, 0xb3, 0xcd, 0x06, 0x6a, 0xed, 0x3f, 0x76, 0xdc, 0x1b, 0x83, 0x72, 0x4b, 0x99, 0x77, 0x90, + 0x25, 0xce, 0x6e, 0x89, 0xe8, 0x9f, 0x77, 0x58, 0x2d, 0xbc, 0x4b, 0x79, 0xc4, 0xd5, 0x39, 0x1f, + 0xdb, 0x75, 0x78, 0x02, 0xc8, 0x4b, 0x8e, 0xae, 0xbb, 0xe6, 0x23, 0xbc, 0xd7, 0xed, 0x9f, 0x0c, + 0xa8, 0x0c, 0x78, 0x64, 0x39, 0xb8, 0x0e, 0x8d, 0x8d, 0x1a, 0x5b, 0xad, 0x03, 0x6f, 0x2f, 0x4f, + 0x49, 0xe5, 0x04, 0x2d, 0xf8, 0xe6, 0xc7, 0x1a, 0x5e, 0xcf, 0xcc, 0xd5, 0xa7, 0x32, 0x1c, 0x15, + 0x91, 0x9b, 0x85, 0x1a, 0x08, 0x5a, 0x7c, 0xf2, 0x95, 0x9c, 0xb2, 0x69, 0x99, 0x39, 0xac, 0x24, + 0xc7, 0x14, 0xaa, 0xf5, 0x00, 0xef, 0x1c, 0x2b, 0xce, 0xb4, 0x54, 0xd7, 0x29, 0xed, 0x67, 0x89, + 0x53, 0x52, 0xb4, 0x6c, 0xac, 0x87, 0x78, 0x8f, 0xca, 0x4b, 0x16, 0x40, 0x9c, 0x26, 0x2c, 0xf7, + 0x30, 0x4b, 0x9c, 0x8a, 0xa4, 0x55, 0x9b, 0x4f, 0x7c, 0xc9, 0xa2, 0xc9, 0xb5, 0x67, 0x98, 0x98, + 0x63, 0x0a, 0x35, 0x3f, 0x7d, 0x43, 0x7b, 0x91, 0xbd, 0x0d, 0xee, 0xe0, 0x34, 0xc7, 0x14, 0x6a, + 0xbe, 0xb8, 0xe7, 0x5a, 0x2b, 0x31, 0x8c, 0x35, 0x8f, 0xec, 0x9d, 0x6a, 0x71, 0x15, 0x4b, 0x37, + 0xfa, 0xe6, 0x2f, 0x84, 0xef, 0x94, 0x59, 0x9c, 0x71, 0x15, 0x09, 0x19, 0xae, 0x1d, 0x17, 0x89, + 0xdc, 0xe2, 0xb8, 0x06, 0x82, 0xff, 0x70, 0xbc, 0x05, 0xc2, 0x7f, 0x3b, 0x36, 0xab, 0x89, 0x37, + 0x38, 0xae, 0x57, 0xa7, 0x7f, 0x75, 0xbc, 0x0d, 0x9a, 0x5b, 0x1c, 0x7b, 0xcf, 0xe6, 0x4b, 0x62, + 0x2c, 0x96, 0xc4, 0xb8, 0x5a, 0x12, 0xf4, 0x21, 0x25, 0xe8, 0x73, 0x4a, 0xd0, 0xb7, 0x94, 0xa0, + 0x79, 0x4a, 0xd0, 0x22, 0x25, 0xe8, 0x47, 0x4a, 0xd0, 0xcf, 0x94, 0x18, 0x57, 0x29, 0x41, 0x9f, + 0x56, 0xc4, 0x98, 0xaf, 0x88, 0xb1, 0x58, 0x11, 0xe3, 0xad, 0x99, 0xff, 0x03, 0x0c, 0xb7, 0xe1, + 0x27, 0xfd, 0xe4, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8c, 0xee, 0x3e, 0x3a, 0x10, 0x04, 0x00, 0x00, } @@ -388,6 +471,45 @@ func (this *MetaData) Equal(that interface{}) bool { } return true } +func (this *MetaDataVersion) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MetaDataVersion) + if !ok { + that2, ok := that.(MetaDataVersion) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Name != that1.Name { + return false + } + if this.Creator != that1.Creator { + return false + } + if this.Royalties != that1.Royalties { + return false + } + if this.Hash != that1.Hash { + return false + } + if this.URIs != that1.URIs { + return false + } + if this.Attributes != that1.Attributes { + return false + } + return true +} func (this *ESDigitalToken) GoString() string { if this == nil { return "nil" @@ -430,6 +552,21 @@ func (this *MetaData) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *MetaDataVersion) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 10) + s = append(s, "&esdt.MetaDataVersion{") + s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "Creator: "+fmt.Sprintf("%#v", this.Creator)+",\n") + s = append(s, "Royalties: "+fmt.Sprintf("%#v", this.Royalties)+",\n") + s = append(s, "Hash: "+fmt.Sprintf("%#v", this.Hash)+",\n") + s = append(s, "URIs: "+fmt.Sprintf("%#v", this.URIs)+",\n") + s = append(s, "Attributes: "+fmt.Sprintf("%#v", this.Attributes)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} func valueToGoStringEsdt(v interface{}, typ string) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -605,6 +742,59 @@ func (m *MetaData) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MetaDataVersion) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetaDataVersion) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MetaDataVersion) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Attributes != 0 { + i = encodeVarintEsdt(dAtA, i, uint64(m.Attributes)) + i-- + dAtA[i] = 0x30 + } + if m.URIs != 0 { + i = encodeVarintEsdt(dAtA, i, uint64(m.URIs)) + i-- + dAtA[i] = 0x28 + } + if m.Hash != 0 { + i = encodeVarintEsdt(dAtA, i, uint64(m.Hash)) + i-- + dAtA[i] = 0x20 + } + if m.Royalties != 0 { + i = encodeVarintEsdt(dAtA, i, uint64(m.Royalties)) + i-- + dAtA[i] = 0x18 + } + if m.Creator != 0 { + i = encodeVarintEsdt(dAtA, i, uint64(m.Creator)) + i-- + dAtA[i] = 0x10 + } + if m.Name != 0 { + i = encodeVarintEsdt(dAtA, i, uint64(m.Name)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintEsdt(dAtA []byte, offset int, v uint64) int { offset -= sovEsdt(v) base := offset @@ -697,6 +887,33 @@ func (m *MetaData) Size() (n int) { return n } +func (m *MetaDataVersion) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Name != 0 { + n += 1 + sovEsdt(uint64(m.Name)) + } + if m.Creator != 0 { + n += 1 + sovEsdt(uint64(m.Creator)) + } + if m.Royalties != 0 { + n += 1 + sovEsdt(uint64(m.Royalties)) + } + if m.Hash != 0 { + n += 1 + sovEsdt(uint64(m.Hash)) + } + if m.URIs != 0 { + n += 1 + sovEsdt(uint64(m.URIs)) + } + if m.Attributes != 0 { + n += 1 + sovEsdt(uint64(m.Attributes)) + } + return n +} + func sovEsdt(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -743,6 +960,21 @@ func (this *MetaData) String() string { }, "") return s } +func (this *MetaDataVersion) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetaDataVersion{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Creator:` + fmt.Sprintf("%v", this.Creator) + `,`, + `Royalties:` + fmt.Sprintf("%v", this.Royalties) + `,`, + `Hash:` + fmt.Sprintf("%v", this.Hash) + `,`, + `URIs:` + fmt.Sprintf("%v", this.URIs) + `,`, + `Attributes:` + fmt.Sprintf("%v", this.Attributes) + `,`, + `}`, + }, "") + return s +} func valueToStringEsdt(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -1309,6 +1541,173 @@ func (m *MetaData) Unmarshal(dAtA []byte) error { } return nil } +func (m *MetaDataVersion) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEsdt + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetaDataVersion: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetaDataVersion: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + m.Name = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEsdt + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Name |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + } + m.Creator = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEsdt + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Creator |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Royalties", wireType) + } + m.Royalties = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEsdt + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Royalties |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Hash", wireType) + } + m.Hash = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEsdt + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Hash |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field URIs", wireType) + } + m.URIs = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEsdt + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.URIs |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType) + } + m.Attributes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEsdt + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Attributes |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipEsdt(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthEsdt + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthEsdt + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipEsdt(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/data/esdt/proto/esdt.proto b/data/esdt/proto/esdt.proto index 0583bb16..84338add 100644 --- a/data/esdt/proto/esdt.proto +++ b/data/esdt/proto/esdt.proto @@ -32,3 +32,12 @@ message MetaData { repeated bytes URIs = 6 [(gogoproto.jsontag) = "URIs"]; bytes Attributes = 7 [(gogoproto.jsontag) = "Attributes"]; } + +message MetaDataVersion { + uint64 Name = 1 [(gogoproto.jsontag) = "Name"]; + uint64 Creator = 2 [(gogoproto.jsontag) = "Creator"]; + uint64 Royalties = 3 [(gogoproto.jsontag) = "Royalties"]; + uint64 Hash = 4 [(gogoproto.jsontag) = "Hash"]; + uint64 URIs = 5 [(gogoproto.jsontag) = "URIs"]; + uint64 Attributes = 6 [(gogoproto.jsontag) = "Attributes"]; +} diff --git a/data/transaction/transaction.proto b/data/transaction/transaction.proto index 2e8e168d..e9026a45 100644 --- a/data/transaction/transaction.proto +++ b/data/transaction/transaction.proto @@ -15,19 +15,19 @@ import "github.com/gogo/protobuf/gogoproto/gogo.proto"; // Transaction holds all the data needed for a value transfer or SC call message Transaction { - uint64 Nonce = 1 [(gogoproto.jsontag) = "nonce"]; - bytes Value = 2 [(gogoproto.jsontag) = "value", (gogoproto.casttypewith) = "math/big.Int;github.com/multiversx/mx-chain-core-go/data.BigIntCaster"]; - bytes RcvAddr = 3 [(gogoproto.jsontag) = "receiver"]; - bytes RcvUserName = 4 [(gogoproto.jsontag) = "rcvUserName,omitempty"]; - bytes SndAddr = 5 [(gogoproto.jsontag) = "sender"]; - bytes SndUserName = 6 [(gogoproto.jsontag) = "sndUserName,omitempty"]; - uint64 GasPrice = 7 [(gogoproto.jsontag) = "gasPrice,omitempty"]; - uint64 GasLimit = 8 [(gogoproto.jsontag) = "gasLimit,omitempty"]; - bytes Data = 9 [(gogoproto.jsontag) = "data,omitempty"]; - bytes ChainID = 10 [(gogoproto.jsontag) = "chainID"]; - uint32 Version = 11 [(gogoproto.jsontag) = "version"]; - bytes Signature = 12 [(gogoproto.jsontag) = "signature,omitempty"]; - uint32 Options = 13 [(gogoproto.jsontag) = "options,omitempty"]; - bytes GuardianAddr = 14 [(gogoproto.jsontag) = "guardian,omitempty"]; - bytes GuardianSignature = 15 [(gogoproto.jsontag) = "guardianSignature,omitempty"]; + uint64 Nonce = 1 [(gogoproto.jsontag) = "nonce"]; + bytes Value = 2 [(gogoproto.jsontag) = "value", (gogoproto.casttypewith) = "math/big.Int;github.com/multiversx/mx-chain-core-go/data.BigIntCaster"]; + bytes RcvAddr = 3 [(gogoproto.jsontag) = "receiver"]; + bytes RcvUserName = 4 [(gogoproto.jsontag) = "rcvUserName,omitempty"]; + bytes SndAddr = 5 [(gogoproto.jsontag) = "sender"]; + bytes SndUserName = 6 [(gogoproto.jsontag) = "sndUserName,omitempty"]; + uint64 GasPrice = 7 [(gogoproto.jsontag) = "gasPrice,omitempty"]; + uint64 GasLimit = 8 [(gogoproto.jsontag) = "gasLimit,omitempty"]; + bytes Data = 9 [(gogoproto.jsontag) = "data,omitempty"]; + bytes ChainID = 10 [(gogoproto.jsontag) = "chainID"]; + uint32 Version = 11 [(gogoproto.jsontag) = "version"]; + bytes Signature = 12 [(gogoproto.jsontag) = "signature,omitempty"]; + uint32 Options = 13 [(gogoproto.jsontag) = "options,omitempty"]; + bytes GuardianAddr = 14 [(gogoproto.jsontag) = "guardian,omitempty"]; + bytes GuardianSignature = 15 [(gogoproto.jsontag) = "guardianSignature,omitempty"]; } diff --git a/data/transaction/transaction_test.go b/data/transaction/transaction_test.go index 93151a32..8025de68 100644 --- a/data/transaction/transaction_test.go +++ b/data/transaction/transaction_test.go @@ -220,7 +220,7 @@ func TestTransaction_GetDataForSigningShouldWork(t *testing.T) { tx := &transaction.Transaction{} numEncodeCalled := 0 - marshalizerWasCalled := false + marshallWasCalled := false hasherWasCalled := false buff, err := tx.GetDataForSigning( &mock.PubkeyConverterStub{ @@ -231,7 +231,7 @@ func TestTransaction_GetDataForSigningShouldWork(t *testing.T) { }, &mock.MarshalizerStub{ MarshalCalled: func(obj interface{}) (bytes []byte, err error) { - marshalizerWasCalled = true + marshallWasCalled = true return make([]byte, 0), nil }, @@ -247,7 +247,7 @@ func TestTransaction_GetDataForSigningShouldWork(t *testing.T) { assert.Equal(t, 0, len(buff)) assert.Nil(t, err) - assert.True(t, marshalizerWasCalled) + assert.True(t, marshallWasCalled) assert.False(t, hasherWasCalled) assert.Equal(t, 2, numEncodeCalled) }) @@ -260,7 +260,7 @@ func TestTransaction_GetDataForSigningShouldWork(t *testing.T) { tx.Options ^= transaction.MaskSignedWithHash numEncodeCalled := 0 - marshalizerWasCalled := false + marshallWasCalled := false hasherWasCalled := false expectedHash := []byte("expectedHash") buff, err := tx.GetDataForSigning( @@ -272,7 +272,7 @@ func TestTransaction_GetDataForSigningShouldWork(t *testing.T) { }, &mock.MarshalizerStub{ MarshalCalled: func(obj interface{}) (bytes []byte, err error) { - marshalizerWasCalled = true + marshallWasCalled = true return make([]byte, 0), nil }, @@ -287,7 +287,7 @@ func TestTransaction_GetDataForSigningShouldWork(t *testing.T) { ) assert.Nil(t, err) - assert.True(t, marshalizerWasCalled) + assert.True(t, marshallWasCalled) assert.True(t, hasherWasCalled) assert.Equal(t, expectedHash, buff) assert.Equal(t, 2, numEncodeCalled)