Skip to content

Commit 36c3704

Browse files
Merge pull request #65 from everFinance/fix/verify-bundleitem
feat(): fix bundle item
2 parents 35d590e + 4b0ec5c commit 36c3704

File tree

3 files changed

+78
-0
lines changed

3 files changed

+78
-0
lines changed

example/api_example_test.go

+31
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package example
22

33
import (
4+
"github.com/everFinance/goar/types"
5+
"github.com/everFinance/goar/utils"
46
"testing"
57

68
"github.com/everFinance/goar"
@@ -139,3 +141,32 @@ func Test_SendFormatTx(t *testing.T) {
139141
// t.Log("from: ",wallet.Address)
140142
// t.Log("txHash: ", tx.ID)
141143
}
144+
145+
func Test_SendMsg(t *testing.T) {
146+
signer02, err := goar.NewSignerFromPath("./testKey.json")
147+
assert.NoError(t, err)
148+
t.Log(signer02.Address)
149+
itemSigner02, err := goar.NewItemSigner(signer02)
150+
assert.NoError(t, err)
151+
152+
defaultTags := []types.Tag{
153+
{Name: "Data-Protocol", Value: "ao"},
154+
{Name: "Variant", Value: "ao.TN.1"},
155+
{Name: "Type", Value: "Message"},
156+
{Name: "SDK", Value: "argo"},
157+
}
158+
tags := append(defaultTags, []types.Tag{
159+
{Name: "Action", Value: "Transfer"},
160+
{Name: "Recipient", Value: "AVm7zHYGzw9PmUXv4CFHgiK3QtbRTpBMS2VOxJAK-F4"},
161+
{Name: "Quantity", Value: "22"},
162+
}...)
163+
target := "7En3PZJ0BBROTuSazQ9yZmeL1ThwsVqk616gY3DMFZU"
164+
data := []byte("1234")
165+
item02, err := itemSigner02.CreateAndSignItem(data, target, "", tags)
166+
assert.NoError(t, err)
167+
muUrl := "https://mu.ao-testnet.xyz"
168+
t.Log("item", "id", item02.Id)
169+
resp, err := utils.SubmitItemToMU(item02, muUrl)
170+
assert.NoError(t, err)
171+
t.Log(string(resp))
172+
}

example/bundle_test.go

+39
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package example
33
import (
44
"bytes"
55
"context"
6+
"encoding/json"
67
"errors"
78
"io"
89
"io/ioutil"
@@ -396,3 +397,41 @@ func changeData(item types.BundleItem) error {
396397
}
397398
return nil
398399
}
400+
401+
func TestA(t *testing.T) {
402+
arId := "-0ArzIK-Vfki6Kmm-HiWSBQifRho4SRcYMFkcGW9bTo"
403+
cli := goar.NewClient("https://arweave.net")
404+
data, err := cli.GetTransactionDataByGateway(arId)
405+
assert.NoError(t, err)
406+
t.Log(len(data))
407+
b, err := utils.DecodeBundle(data)
408+
assert.NoError(t, err)
409+
item := b.Items[0]
410+
t.Log(item.Id)
411+
t.Log(item.TagsBy)
412+
413+
tagsBy, err := utils.SerializeTags(item.Tags)
414+
assert.NoError(t, err)
415+
t.Log(utils.Base64Encode(tagsBy))
416+
417+
tagsBy1, err := utils.SerializeTags1(item.Tags)
418+
assert.NoError(t, err)
419+
t.Log(utils.Base64Encode(tagsBy1))
420+
}
421+
422+
func TestB(t *testing.T) {
423+
// data := `{"mainItem":{"signatureType":1,"signature":"f1iKOgLh6LYCLWWvrzfrvB3dO1VnQ9rniy29OEI8C6bJTgBF7ybB1JjCBsiy1Cb7OaGwDYvYc50aY2wbbAw0ysIhSDUoXZQkyKlrcEVMWM7gUhzEOI6N9BjRlj3cDkN2K1esisIDwhA6OGhBoffA9RCv3RmOnL4kUa34JiDq43NX3IsKnAf7Fjy9Jnk2eDqbxmDVIysF48X13NqKvEtvjSorOS62KmbmBhEasbYnEFeHoMSQfTAHbgJx6hRwn46ujNPKI9QRM-HVpecbmy7W2tubjZkHqP1CWzpBYCo8FyJrDqV1qtmWzFhPXxcyZOirg_aQbS2mxD9jJYzDVCgonkzkbWVURgYusEuD0gH2uMkLKFOP5CHzsWYkf08pLI7wMZQvYXRnLNeX5Gxjd8SMZK5zXFY3cY6mjzvqCa0k1AMladFaQt2JqnlG4yC-nOkc_x35EDTM4ogMe3SS0AG7lgUR4bpPxPk36DxpejU0aZUBGzdXhDWJOhzuOQHXLJfOvyCgassKDLV3-4cS0pQM11he2-0GmlD-KO-qOyvJlZk_J5-crXeeXdyU_gCt9_Hcu8Zzef3F5kaWOvO_q5NO-41aDcrlxDa1r2ONMdMaR7qnbmOAyk3YzdgQ0eSBreCmqAagLjHa8qQMqRL5KEu2cvGad6G84_-tNWE25Wn2MWY","owner":"t99k0vXXnX6h4lboKxfwZd2FfUoR1yPNUk1-LyCHcHMReVvZWfUvpOW1no_3axDSlo7xRsbTp4UEUeazZiv_It9PwcqT8lC_p1CzKv0kWH_1kjCYKm-0efgx5SPc7rIT3SVohC2-SI8meEA_3YP_k-FxUNa3zwbu5sKcy_hAUia_4a6sEFymeuQaBJux5snjYnX-iVhc5tjqauAGOXTh_Nhg9LNC_VlItutKxmkF7W-lM1wtka_yK-v1Xbcr4CFExiRI03keGqTfesSxfbkPm9C7N3ihbpYhQ68nhBdZzNFPEHGWPeEVW0yA8yHTZ5ytckpAmLSqOrqnPEiMeZrh-Fsgp7beIyfvjRG4yNjfoZkZdHrOHhppBPUp2t64OTQickkPsDkHQRf_BhNAXkdco4pOwMF_N6GQS8YhCN6TUp3DAvJp4QFR2jDH4nuMWma5TcxSDXfLM8HBD478Uwzflbrfrb0FQgfyD6lfNqvaArwqbJBIiwNo70FT65i8V1g507297VZ9UmuJfahea9aDgLntZT6kbZTZnE4m4lE9U6B9in_Wvx_ZdGi3BptGd8AyB-2FWv-xOltEmN-pDRaBhjucQmVzoptZZ6UrzXwlL21fiTBCoUJPJVjOYldW0VqXevkGe24SWLiUB_EApg418JNiHplJtUsEhI2DIhHFb9M","target":"Sa0iBLPNyJQrwpTTG-tWLQU-1QeUAJA73DdxGGiKoJc","anchor":"","tags":[{"name":"Action","value":"Transfer"},{"name":"Recipient","value":"FyINHRSrHW0teUhvJzd6R33Tl50qxLnSj8LJCP5puiI"},{"name":"Quantity","value":"2000"},{"name":"Data-Protocol","value":"ao"},{"name":"Variant","value":"ao.TN.1"},{"name":"Type","value":"Message"},{"name":"SDK","value":"argo"}],"data":"MTIzNA","id":"2usO_ScavCzedD4zS6QE1fBQK35dSCoclFTueL17CsU"},"targetChainType":"aostest"}`
424+
data := `{"mainItem":{"signatureType":1,"signature":"H7RKwdh8B-ZXxLgNxPN4LNYmz-Gb_vcmmsYDFDFCOg-6uHUgXfQQtqnJ_wSZUrIXucuG8rVowCJps665jZwr7V-HjznmzBPqmKjCiS-TEEdo_TGHHKEQHpxBq_3m_IKRcFHbzuVNu0lqBUI76qQsH7PgIqxSfyfRAO-0oxebq1quWQ_Q4EFeI9Bi37oty06z8UWuQsLDdTezxArFurfF5nddkSAQ0cYnMYT7UE2-Zlq_LLXArxxcBADDJTNP4QoLDjsHzGIxXNizsW9wQvVdTq9VVT_WV8qbNMPfwkt0GybxFVpEt3S9f-r-aM5MTn8QjPPFjXk4oPZBAWY2GkI3es3N_jVKISjSOkfy-vDbvGUKoBIuHWsh192vd0r0bv-kXlINktbryi_yLBQVyGkvanEeLqfOxR74KjlJBYKKr75h_95dmuKuPhGNIV8eQoPbQ6hm6HcNUWuExhFWwdU8H3EJCZNF1OQiOzU8uNgWPOqgMo1av9mxfrxkL3IwPXfTxclSVqWubxZhjtWCWq3ib-EyatSIQa5I4VGZBeXjGR3xqKljgKAhargf5xCpdtqiC3pb1BLXMzw8XRoYHBy_WW3a371t7Zsl5Ydby26uMnxV5OBWTA_cPMPTSOQ4TuX-vtVArbtjfDCAQoMUkzyHfP4D8JvAHjthto8DuOXRV9c","owner":"t99k0vXXnX6h4lboKxfwZd2FfUoR1yPNUk1-LyCHcHMReVvZWfUvpOW1no_3axDSlo7xRsbTp4UEUeazZiv_It9PwcqT8lC_p1CzKv0kWH_1kjCYKm-0efgx5SPc7rIT3SVohC2-SI8meEA_3YP_k-FxUNa3zwbu5sKcy_hAUia_4a6sEFymeuQaBJux5snjYnX-iVhc5tjqauAGOXTh_Nhg9LNC_VlItutKxmkF7W-lM1wtka_yK-v1Xbcr4CFExiRI03keGqTfesSxfbkPm9C7N3ihbpYhQ68nhBdZzNFPEHGWPeEVW0yA8yHTZ5ytckpAmLSqOrqnPEiMeZrh-Fsgp7beIyfvjRG4yNjfoZkZdHrOHhppBPUp2t64OTQickkPsDkHQRf_BhNAXkdco4pOwMF_N6GQS8YhCN6TUp3DAvJp4QFR2jDH4nuMWma5TcxSDXfLM8HBD478Uwzflbrfrb0FQgfyD6lfNqvaArwqbJBIiwNo70FT65i8V1g507297VZ9UmuJfahea9aDgLntZT6kbZTZnE4m4lE9U6B9in_Wvx_ZdGi3BptGd8AyB-2FWv-xOltEmN-pDRaBhjucQmVzoptZZ6UrzXwlL21fiTBCoUJPJVjOYldW0VqXevkGe24SWLiUB_EApg418JNiHplJtUsEhI2DIhHFb9M","target":"Sa0iBLPNyJQrwpTTG-tWLQU-1QeUAJA73DdxGGiKoJc","anchor":"","tags":[{"name":"Action","value":"Transfer"},{"name":"Recipient","value":"FyINHRSrHW0teUhvJzd6R33Tl50qxLnSj8LJCP5puiI"},{"name":"Quantity","value":"2000"},{"name":"Data-Protocol","value":"ao"},{"name":"Variant","value":"ao.TN.1"},{"name":"Type","value":"Message"},{"name":"SDK","value":"argo"}],"data":"MTIzNA","id":"UDL4bmFI_E74WLBkol69NWoHJG4dwRA_sLo78u79eAg"},"targetChainType":"aostest"}`
425+
items := struct {
426+
MainItem types.BundleItem `json:"mainItem"`
427+
PushedItem types.BundleItem `json:"pushedItem"`
428+
}{}
429+
430+
err := json.Unmarshal([]byte(data), &items)
431+
assert.NoError(t, err)
432+
// check main Item
433+
mainItem := items.MainItem
434+
// verify mainItem sig
435+
err = utils.VerifyBundleItem(mainItem)
436+
assert.NoError(t, err)
437+
}

utils/bundle.go

+8
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,14 @@ func newBundleItem(owner string, signatureType int, target, anchor string, data
485485
}
486486

487487
func BundleItemSignData(d types.BundleItem) ([]byte, error) {
488+
if len(d.TagsBy) == 0 && len(d.Tags) > 0 {
489+
// calc tagsBy
490+
tagsBy, err := SerializeTags(d.Tags)
491+
if err != nil {
492+
return nil, err
493+
}
494+
d.TagsBy = Base64Encode(tagsBy)
495+
}
488496
// deep hash
489497
dataList := make([]interface{}, 0)
490498
dataList = append(dataList, Base64Encode([]byte("dataitem")))

0 commit comments

Comments
 (0)