Skip to content

Commit

Permalink
CSDK/update_transaction_target_serialization
Browse files Browse the repository at this point in the history
Update transaction target serialization
  • Loading branch information
ZhmakAS committed Dec 17, 2024
1 parent 70c7bc7 commit 42cf373
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 46 deletions.
4 changes: 2 additions & 2 deletions tests/data/rpc_response/query_global_state_package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"api_version": "2.0.0",
"block_header": null,
"stored_value": {
"Package": {
"SmartContract": {
"versions": [
{
"entity_version_key": {
Expand All @@ -22,4 +22,4 @@
},
"merkle_proof": "01000000108e08c43f144a13c915cf3681cc97bcd98c6a81d7b5da5164dc066318ec1c80a70c010000000200000001000000a5cf5917505ef60a6f0df395dd19e86a0f075d00f2e6ce49f5aa0e18f6e26f5d00000000000000000002000000008e4c0000000000c6f1b9ca884c35c3326f3d17cd3947de0481fb65b49740b344f1ae42e739eab90100774e41e1b426ed159fb3f2c28f9da9cf6c02fbb3a3892ca9abe5bf8dfe1e97f60300b966a0acb632ef7be2c3f72a854fa002ef3d106e2786dc95f044e21e05f9c0690700e7bd117780d831bad6659884e2fede9481d5e017182bfe45d861fdc706a4634b0c002b0443ed2d501c615226e97389e3131abc95ab47efa13bb5397e942739424bae0d01c4fe0149516b296fa27396e2437df1e56a90881588f02b457a2958856b1045da0e00b607c92dbeacd588d09b052b27df065efaf4c22bcc375ec14d1c4d0a39aba9d11200d099ff451321429ddf5191d9d990fc4deadab71b5367f91ba46236eed63666ca1600e3147b25c0f6828fc491419b6324c811f363d78c93821f3d2359f5ebc5bcefaf1700e2ec7344576f036136854be95a86a01e33ad14857d4485846b844b793c4595fb1900821a9ffe26974f853292ba1db87866ef0eef09a362183749910b2b8ff5eac2781a007dbc45026bb32d8e94ccf3c61b086ab527c8260c42e39eb1509f5e2d848322342000a3b0a3230c905ca68ef8be2c8cef6966e553f40afeeb4de329169474cda8f76b2300e477825f1d399f2ab13aab656a1b07ceb27230f2966be67c571834c125a51397260008b0575ce185f76ad15c9bed036fe93abc529e72749eade6247bcb63813aef3d2b0060c5e051c3ed621cbbe70552b8a41e64cdf7ad2a2fe47d64a48c366d6d307c692c017f79f9ad0b1b2bcce42f10b9323c8bd3cd858233701e837fb6f6cdc965b7d8862f000e8f81b4ac8bc3bb538cf40640ba3179958ec5fc9efdd35b9d7842dc754f2bc83200d7b01d7d8336b597e9f633fdf4dfdf014e9228de0ee728f3ffe2d7cc21d72fba35000c0153f39054e4da3c22686f1251ab3ff4e312c3942236c6aa3712a2acd47ebd36003ae82e35741833a317fbdbd2ef311b623a007e0be8530e4198202ccf484d58e43900d4a2b5745bc4007ce5719207638ee8619d5afdae312b22f75e066711c154df033d0097b349d9e2698fc472c7069bed1a3144f3f851e44301b2dafa07eac08a29dd36410048bdbc914f67b165b27184dac9dcc5859b283a5fde253aff265b6aa88229a4114a00c19636043ca5aca8877330597f36deb46b0ff068f735fee5e6b44e9df886d4964b00e4c4bdff0bd2d01e161dc09c2d43f98ce8710e7703ed29397d1cda90753d62e8520004f0dbd1b4997e616418c3e312d7444b2af44fa4db65334d28189b2dd6c3c80d54000722b9ba9b708a7549e5c14f8fd3f39c340ac0d09897f2c3013e49f2358ce92d5700be4f10bd1a1d7ae6bd10147f4f9ad8ce5ef45815cf70e63d4655f66acf414a8b580009e8bc02cab67a51cc70348d5533150c3dac78376d6049c2e9ac1e94e5f9b74c5a00580ad3cf2a9c4244517e4f279853247ba410c896b849cd662a98014bd29662c05c008fe23b757defdfb411505e026fbb82a221c6d8bf6e0b87e6eb27e87332fafd0161001518fb461fe158ead01b5ab7029f529eeefc2893b16aed9b08f9ce6ad205f4736200a1b4de3bd2586d51554f38a51c32bc1c6a5dce26b3302e49c41815b40d96bff5630056ddc17c50f24bedae39d40eee8eaf0491c8dd9db290d88b4190546f5c79a4d56501da68a246394955babd0d5c32ee90b637bbb331114829cf2d8f669752f897f8cc6f001bce4b2c8eb7b76e692911485d815e1bd56296b302d00fef449f60ec28db63c17400c641fedc9c3787e773cbe2852bd0d800b2d3f83fea8223959e6713b1294ab8ba7b008ebc297d8ddc318b98ca7fc531d8a154e5da2c023b12b1423d1a42bbf018e43c86009eb367f18e7874245c67411174980e949f199db863b2d7ca2e272462f1c1ae91900008d1213c949a5ef250e6860f76e65d1f19923d83d61e084293524aff86ca39529700c483ab0652e3655bb41d76181b3a82eccd808c238e292d67ead2d701b207d18a980071df1f5b6f8d385f7ee3b53227ffc00fe378a156f0192265ee59ff593a4af51c990035902928a51aec7c193c9d46397268cf8a6fbf2869081d1a9f8fe3987ccda3d19e017687466da7a31fb22afdd4256cbbb3af20dcbb5b444d3d597cdf9e921f9b1de49f00916dea0a9fcea5057882e93cb384e5c37fb5ed23a12b11b0436f017f945246f7a80069b1450b7b0a4711d2078bee4541f80f27787020d69831e6b81264027eecb83fa9003900a4c49b3e135e7e393a4310326f13f726eb968936af097f8ea490179f6da8ae01b363bc91f88d6171da6f9fc9bd39f8439f6023e86889e7b977dce9d9bf99f1a5b100ca84d074d3880da1feb663e61feb528e1feab85c591c2655a9928267091230aeb200974a3215119d5efdcf8f7deb1c51fdbe5233a1f7d697d1fe28d6fc4166a3f064b700efa00f9b7a0e27152fe243600e92ddaa106759d67bab8e54b6e94c6ffb586818ba00f786f408a82e634b9e7d760c1b787590942723cb4f97513ad54af356dab1fa29bc007863057d60a44f4c758e74cb123c62f3f95396c67ebfe94e4b8e968f2fad5059bd009df58fd05e6fc940efa0399b19cb1a865e7c1740c8fb82b50c2f1120b44bc733c000891a4140189337efde21c296b3feb9b303771a74ea38ccc984720d192104bcc8c100cd523a7097d4d15eff78334192b332e4efbc3449c79a0feb868cd1aadc1ba753c600f6605c8cf03765578231df2198baf4b37a94393fc606db5a14077f5b3d1a9620c700121ce42239b1df3f79cec58359035ece958f43ddd19a37d13c4656c00277c571cd00da11d5fee206969cc8bfc50c63ab6520d631730a878bc45a1d419587283ef684cf00b557524c6d1dda28d269f76315a8951a739746f57df940daa3431a72b0a2a0bed100f33fda91a746be3955675bb6a4d5fdbbefed2613a2c51599d0d449a46887def9d2000581762135c895af0908fa1f42d84c54cb562d486d97931f788d28ba25e502ecd700a3a558e617f0a34a352877e83101140ded84349c9563d1f0eb4f2aa18a0c9003d800b4d8d94e1300c6be8d6b8f950e88d23495433d9cb1c12e502c6499e2391b43bcda000921cd1e32f7fd85d75a1336cd4d0260aabb6c35db8c00685ac8b8ace9e1c378de0026302f3b115160c544c753e031ebcf073c8049c5e1464ebaa00d6f6466aadf43e301a668c4b5922c114acf5d35782746ef1b43a9f6948bcb82f9b88fb9adeedc5610e9006c4e66734f97a3435744bc7dd4b99ec782fc669caf8dc8733bb787ce5d984311ed00312ec19f0765f39974dba780c9b1790c69490511abd5e2218b9819f404e1cb0eef01dbc3765bcd0099ba66ce81948f48c4abbd0c52fad1f40d6af4535dc2cb36d876f4002ffd5f178bd2b916b12578f0865bb12284aa3e964dda6c82984e573e147ece99f600e984b94fab98142dfb1974f9805b7299788f438584eed13d9be933fe26dfb062fa00a573449ba54e24b065c017b7b004e0983b59bb8469d4e8d402989372fd6c8737fb00ef19c8edfb37c0e0327fa9eb41de351fca6a78349790c663dc0662ec2c0d2d3afd0095fc72cdbbd1424fafe3f9f2269a69c7c11674147beb341d031b82b46edd33f00010100000000001f3bf20a63548bc9a9d4dc43c3e6939222ef64f305905d32545a334be05a5bf3102014e6dfb996b829283050c84f04797970c7637419fc07a1b2db1aa780e82317d98060155089e4b39eaba1b8e5259ae150b2aa0a9a0da0a757803c0ee57520a194178cf090106f8f679d0cf2a59896501b999fbffe04a643391483a530974586248c7f5eadb0a00a88a2ec26e14b9984f2f7588fc27dcbde754144ac8991fcdcb1555e05d5a3c720b0068c1ef6e0fd9083cf80b028d1eaef64e2d6b8f7875d18bf67d8fb8d997d89bd70d009f8aacc0ef174fce35805337a386e3651bc5460955b034a1056aa806305c59810e0043d39741a6e7b395eace3b1fbbbd5bbf288f7a788e80745a2e2bb0f2173a8b4f0f013e0bbc0cb4947a47dd6cdd447bd2d5ef64928eea5453e4ffc06fa2886c3ec498110107e372c43ea33f4681bf87bb1064bf55c72bf1c0b6ec86989c574b088854fbff1201f7f3aadccd1c9690c80c2951ffac31cc422bb79af88ae21c92f1aba1366311ad13014a957c2567b348d50f47437361689b8eabbf38a9c3026afb972354df5bb37df8140157b785ba1107cbfb473e1f8ed37fbc861ac94387fc404b1013d2ec220107e2b61501726a256369aa5572f95b45eba8e7951e6c77f6a049bc378637532c888081dea61601df3764330f12ce0a96cf32d6efd641d64d1b5612b73deae82518ad5a18f9a22617016f094feaf99dfd69a891215d3bb347e47def925b703b579713ef5b5ed6ecd30c"
}
}
}
6 changes: 3 additions & 3 deletions tests/rpc/rpc_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -378,9 +378,9 @@ func Test_DefaultClient_QueryGlobalStateByBlockHeight_StoredAddressableEntity_Pa
key := "package-8e08c43f144a13c915cf3681cc97bcd98c6a81d7b5da5164dc066318ec1c80a7"
res, err := client.QueryGlobalStateByBlockHeight(context.Background(), 1000, key, nil)
require.NoError(t, err)
assert.NotEmpty(t, res.StoredValue.Package)
assert.NotEmpty(t, res.StoredValue.Package.Versions)
assert.NotEmpty(t, res.StoredValue.Package.LockStatus)
assert.NotEmpty(t, res.StoredValue.SmartContract)
assert.NotEmpty(t, res.StoredValue.SmartContract.Versions)
assert.NotEmpty(t, res.StoredValue.SmartContract.LockStatus)
}

func Test_DefaultClient_QueryGlobalStateByBlockHeight_StoredAddressableEntity_Contract(t *testing.T) {
Expand Down
3 changes: 2 additions & 1 deletion types/stored_value.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@ type StoredValue struct {
Unbonding *UnbondingPurse `json:"Unbonding,omitempty"`
AddressableEntity *AddressableEntity `json:"AddressableEntity,omitempty"`
BidKind *BidKind `json:"BidKind,omitempty"`
Package *Package `json:"Package,omitempty"`
SmartContract *Package `json:"SmartContract,omitempty"`
ByteCode *ByteCode `json:"ByteCode,omitempty"`
MessageTopic *MessageTopicSummary `json:"MessageTopic,omitempty"`
Message *MessageChecksum `json:"Message,omitempty"`
NamedKey *NamedKeyValue `json:"NamedKey,omitempty"`
Reservation *ReservationKind `json:"Reservation,omitempty"`
EntryPoint *EntryPointValue `json:"EntryPoint,omitempty"`
RawBytes *string `json:"RawBytes,omitempty"`
}
42 changes: 2 additions & 40 deletions types/transaction_target.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ const (
const (
StoredIdIndex uint16 = iota + 1
StoredRuntimeIndex
StoredTransferredValueIndex
)

const (
Expand All @@ -46,17 +45,14 @@ func (t *TransactionTarget) SerializedLength() int {
}

type StoredTarget struct {
ID TransactionInvocationTarget `json:"id"`
Runtime TransactionRuntime `json:"runtime"`
TransferredValue uint64 `json:"transferred_value"`
ID TransactionInvocationTarget `json:"id"`
Runtime TransactionRuntime `json:"runtime"`
}

type SessionTarget struct {
ModuleBytes []byte `json:"module_bytes"`
Runtime TransactionRuntime `json:"runtime"`
TransferredValue uint64 `json:"transferred_value"`
IsInstallUpgrade bool `json:"is_install_upgrade"`
Seed *key.Hash `json:"seed,omitempty"`
}

func (t *TransactionTarget) Bytes() ([]byte, error) {
Expand Down Expand Up @@ -88,9 +84,6 @@ func (t *TransactionTarget) Bytes() ([]byte, error) {
if err = builder.AddField(StoredRuntimeIndex, runtimeBytes); err != nil {
return nil, err
}
if err = builder.AddField(StoredTransferredValueIndex, []byte{byte(t.Stored.TransferredValue)}); err != nil {
return nil, err
}
case t.Session != nil:
if err = builder.AddField(TagFieldIndex, []byte{TransactionTargetTypeSession}); err != nil {
return nil, err
Expand All @@ -109,24 +102,6 @@ func (t *TransactionTarget) Bytes() ([]byte, error) {
if err = builder.AddField(SessionModuleBytesIndex, moduleBytes); err != nil {
return nil, err
}

transferredValuesBytes, _ := encoding.NewU64ToBytesEncoder(t.Session.TransferredValue).Bytes()
if err = builder.AddField(SessionTransferredValueIndex, transferredValuesBytes); err != nil {
return nil, err
}

var seedBytes []byte
if t.Session.Seed != nil {
seedBytes = []byte{1} // Option Some tag
bytes, _ := encoding.NewStringToBytesEncoder(t.Session.Seed.String()).Bytes()
seedBytes = append(seedBytes, bytes...)
} else {
seedBytes = []byte{0} // Option none tag
}

if err = builder.AddField(SessionSeedIndex, seedBytes); err != nil {
return nil, err
}
default:
return nil, fmt.Errorf("invalid TransactionTarget")
}
Expand All @@ -148,18 +123,11 @@ func (t TransactionTarget) serializedFieldLengths() []int {
encoding.U64SerializedLength,
}
case t.Session != nil:
var seedSerializedLength int
if t.Session.Seed != nil {
seedSerializedLength = encoding.StringSerializedLength(t.Session.Seed.String())
}

return []int{
encoding.U8SerializedLength,
encoding.BoolSerializedLength,
encoding.U8SerializedLength,
encoding.BytesSerializedLength(t.Session.ModuleBytes),
encoding.U64SerializedLength,
encoding.U8SerializedLength + seedSerializedLength,
}
default:
return []int{}
Expand All @@ -171,9 +139,7 @@ func (t *TransactionTarget) UnmarshalJSON(data []byte) error {
Stored *StoredTarget `json:"Stored"`
Session *struct {
Runtime TransactionRuntime `json:"runtime"`
TransferredValue uint64 `json:"transferred_value"`
IsInstallUpgrade bool `json:"is_install_upgrade"`
Seed *key.Hash `json:"seed,omitempty"`
Module string `json:"module_bytes"`
} `json:"Session"`
}
Expand All @@ -188,9 +154,7 @@ func (t *TransactionTarget) UnmarshalJSON(data []byte) error {
Session: &SessionTarget{
ModuleBytes: decodedBytes,
Runtime: target.Session.Runtime,
TransferredValue: target.Session.TransferredValue,
IsInstallUpgrade: target.Session.IsInstallUpgrade,
Seed: target.Session.Seed,
},
}
}
Expand Down Expand Up @@ -241,9 +205,7 @@ func (t TransactionTarget) MarshalJSON() ([]byte, error) {
}{
Session: sessionTarget{
Runtime: t.Session.Runtime,
TransferredValue: t.Session.TransferredValue,
IsInstallUpgrade: t.Session.IsInstallUpgrade,
Seed: t.Session.Seed,
ModuleBytes: hex.EncodeToString(t.Session.ModuleBytes),
},
})
Expand Down

0 comments on commit 42cf373

Please sign in to comment.