Skip to content

Commit 95437f8

Browse files
committed
feat(): add bundle example
1 parent 84712cd commit 95437f8

File tree

2 files changed

+117
-32
lines changed

2 files changed

+117
-32
lines changed

example/bundle_test.go

+109-31
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,121 @@
11
package example
22

33
import (
4+
"github.com/everFinance/everpay-go/sdk"
45
"github.com/everFinance/goar"
6+
"github.com/everFinance/goar/types"
57
"github.com/everFinance/goar/utils"
8+
"github.com/everFinance/goether"
69
"github.com/stretchr/testify/assert"
10+
"math/big"
711
"testing"
812
)
913

10-
func TestBundle_SendBundleTx(t *testing.T) {
11-
// signer, err := goar.NewSignerFromPath("./testKey.json")
12-
// assert.NoError(t, err)
13-
//
14-
//
15-
// itemSigner, err := goar.NewItemSigner(signer)
16-
// assert.NoError(t, err)
17-
//
18-
// tags := []types.Tag{
19-
// {Name: "Content-Type", Value: "image/jpeg"},
20-
// {Name: "App-Version", Value: "2.0.0"},
21-
// }
22-
//
23-
// data := []byte("123456")
24-
// item01, err := itemSigner.CreateAndSignItem(data, "", "", tags)
25-
// assert.NoError(t, err)
26-
//
27-
// err = utils.VerifyBundleItem(item01)
28-
// assert.NoError(t, err)
29-
//
30-
// // send item to arseed
31-
// arseedUrl := "https://seed-dev.everpay.io"
32-
// resp, err := utils.SubmitItemToArSeed(item01,"USDT",arseedUrl)
33-
// assert.NoError(t, err)
34-
// t.Log(*resp)
35-
//
36-
// // send item to bundlr network
37-
// bundlrUrl := "https://node1.bundlr.network"
38-
// resp, err := utils.SubmitItemToBundlr(item01, bundlrUrl)
39-
// assert.NoError(t, err)
40-
// t.Log(*resp)
14+
var (
15+
signer01 *goether.Signer
16+
signer02 *goar.Signer
17+
)
18+
19+
func init() {
20+
var err error
21+
signer01, err = goether.NewSigner("1f534ac18009182c07d266fe4a7903c0bcc8a66190f0967b719b2b3974a69c2f")
22+
if err != nil {
23+
return
24+
}
25+
26+
rsaKey := `{ "kty": "RSA",
27+
"n":
28+
"nQ9iy1fRM2xrgggjHhN1xZUnOkm9B4KFsJzH70v7uLMVyDqfyIJEVXeJ4Jhk_8KpjzYQ1kYfnCMjeXnhTUfY3PbeqY4PsK5nTje0uoOe1XGogeGAyKr6mVtKPhBku-aq1gz7LLRHndO2tvLRbLwX1931vNk94bSfJPYgMfU7OXxFXbTdKU38W6u9ShoaJGgUQI1GObd_sid1UVniCmu7P-99XPkixqyacsrkHzBajGz1S7jGmpQR669KWE9Z0unvH0KSHxAKoDD7Q7QZO7_4ujTBaIFwy_SJUxzVV8G33xvs7edmRdiqMdVK5W0LED9gbS4dv_aee9IxUJQqulSqZphPgShIiGNl9TcL5iUi9gc9cXR7ISyavos6VGiem_A-S-5f-_OKxoeZzvgAQda8sD6jtBTTuM5eLvgAbosbaSi7zFYCN7zeFdB72OfvCh72ZWSpBMH3dkdxsKCDmXUXvPdDLEnnRS87-MP5RV9Z6foq_YSEN5MFTMDdo4CpFGYl6mWTP6wUP8oM3Mpz3-_HotwSZEjASvWtiff2tc1fDHulVMYIutd52Fis_FKj6K1fzpiDYVA1W3cV4P28Q1-uF3CZ8nJEa5FXchB9lFrXB4HvsJVG6LPSt-y2R9parGi1_kEc6vOYIesKspgZ0hLyIKtqpTQFiPgKRlyUc-WEn5E",
29+
"e": "AQAB",
30+
"d":
31+
"LIqif_yFrcm_q37XRr5KFiC4oUUsQKb5dx7fbLPlzXmsYb6OdfTLoFloVrOhYQ85uw2gNMRqToOAmgDAroQDspaoivlo5bhwP7R4orSVJP84xKzJMx-aNke3hGZtywQdytqfmQv_i3jxRm0Si33EXUnrWQVbEVmCEJ9kfgaIJ0NhALQ8TGx7dxv7cLp6U3zY0X2_PrsVkday5MFS45Wt4vHuYaGeBS4KFygHDflOlKiJ4FGksU3wzyBFO0o1tST21ayxd_G6sbdyar72sQU-asBvYU3kSVMuZs20i1C67qEizk1jqcdKbRuKRApqqs7ub8g2U6yDQaZYqft7KqC8Oi6X-VrUFNMttzvrTmJ0nhzGs1g7SJnZp1NJ1yvqwHOoisUjd0kyqBsDBzT_q0UsYOTM9yi3Ve021R7ghVQPGuvbDmRz8rCm_XusWRp2pzE1R14vot6G67w_2eXGNeD8GYjLKEX35DJwQqhqmD4AVR03u1slY7QK_EI2TxD2aCSpsBToX2Rix0E18dfPCkPmb4WAXccgyMKyR07w_31eypp1qdcQ4cNB_3-2QvM6kbzH3LJkRyPZzamiTB4pKoaQRDqKas0_QctmIdjAWNDr79q4cDcWB0de6X8H6QTjJoL28Lf6pvXXatLoHMAaVHWZpq-yz04-6oiA4pY6DFIs8AE",
32+
"p":
33+
"yL6EzJ5NP0T4vUyWDjkGRI2JAqD9wJhaNd3jt-2Wip3aOQBcmWyagM2tRfbQunwWRquVGd6oSW-Tfr5aBesY3C_EKkbiXt7CSJ9iWz15FBWlLe5lSLbVi5tIcY7iV_D3iFND4mX39gmILX7p_sPmt6z5ZpHKv9MvypjuU2jKScC0HER5fgB-xJAhOQ45xfxuqjpDY6vVWUms6ZSTF3NOrLIrcupNdxUpWNjxKI6A48cvfKdAwJi-vtJcEZFrCJCv98UTgZFSgiWyUVcW2Bt9BYJQRKffm7cuC4aT_xwYq4sMcALoEq0CXIQ9XK4rRPH2bq6E2aZ2ll57OUBWR_1KEQ",
34+
"q":
35+
"yEqoTJqr4EyWoxa-qz5x4FEylw9ueTqLmnZGBbRZaVwJnEY-ydoOaty9ZOtGA6g8EfLVGhtYy_B51479gpDTtygV846313WPDU3drTsPvGNmuA0dD5w4Vva-759Zmc4BcoJA7UYnlr4QRaLQuNAmf9RCgA-yTtHppt5Lre7tGG5K4j7uHRPzp3NhKPq8WosbydN0kFz-a2Vn9kZjoqI3m1JqvX9wRGFzOZlUnQTWA7MaGv4SgoqMMu8PyKQLjhbIJyvnIGI7NZjCi1uw0H03skdgC8bBEL_uSp6Go8nr1apGJ6o1x5_hriofgD9DvpKMkEsx4uTxRvxFys8w3jh9gQ",
36+
"dp":
37+
"Il7kc_hit4OCpz62roa6-P_Wxplz-Qbc4z4zoClQzjkKxRm3wRkkNwuAMGt6_4MBeWYlaEGERNaSxW-oED1Zi1GuX6K1XZL8ZtzLRV34HiU6m-umcdXEKFwVAkR5op8Cctf21ouo8fpd05RYUiOOnEJEjXhG46MwGpsmqydVA124OOLMfnNtQRCAb7ls0OZQuFqzcRxZsij4LyIeMTSv8seqwsk1LD92Td0PJWeIz_cpvUkRwCgm-Jsh4mwojFXhmyWmGlgcbWYw6tZjder28_uE7Mxlb87kVlrbeiGAY9ax8Xe97nyq29ZUf0re47YeAINnAbELuuFAbeQDId5PUQ",
38+
"dq":
39+
"woDVvUZ64OAfbRNaZ_vFJHxVr6K5uppjFcYDq-h-57UMVClXMjhCxf3FIqrjnAuVAi0aSzcBXVMTT4S5pUC1iOkxoAsZdu_f0qCqRF7VojG5f8SkUxN3FuSZeSP7JESM3UGmgYUeTuIV9TnujXr92CctyST1GFv7FiRLxAYBUzdQGzPXkn9cn2GJmf0cSqVKgA2L5eGY5HxeoCes_DOh4oD_zTRjttQXzHidVbprhr43_Lx9By46hf_oCQVdf0eaaYfV9HnQW_UT_7c0FtNy8fskR2tk87ofU3Fs-MPO9PhdFonRniEiTTr0ylslk3zHahzLvjZsJG457ICWSUb8gQ",
40+
"qi":
41+
"ENtqTq3iiDkeiyPWD7pNRfiwIJnY5Zf97yXakxe04usHXWKmZulllttqsDkfHOXkBxRxHxqqTgOLuRpNsLrpI5MAxs8uSl13A70LUzHldnE8ePgt0688UpoI5Iw9oV2RdF_LvSrsgpa-SeexXxbZqXWpDNeUxYt2S327cS8HmrnETKy9z9VoVFmCT6_NCnxOaOTwr67dPBnGnW7nT3499m_aqmikCNjcmkfYihED6S2jZBRHPaSDM7JPPyQSEyRkGjR4z9JzhLOvbJf8tDKSE00JXJClmbpX-5qRcNt0gcJy6ceYQs-c94I24yGpunMMSwGo2i1-sGNwH1wj5-gv1Q" }`
42+
43+
signer02, err = goar.NewSigner([]byte(rsaKey))
44+
if err != nil {
45+
return
46+
}
47+
}
48+
49+
func TestBundleToArweave(t *testing.T) {
50+
// sig item01 by ecc signer
51+
itemSigner01, err := goar.NewItemSigner(signer01)
52+
assert.NoError(t, err)
53+
item01, err := itemSigner01.CreateAndSignItem([]byte("aa bb cc"), "", "", []types.Tag{
54+
{Name: "Content-Type", Value: "application/txt"},
55+
{Name: "App-Version", Value: "2.0.0"},
56+
})
57+
assert.NoError(t, err)
58+
59+
// sig item02 by rsa signer
60+
itemSigner02, err := goar.NewItemSigner(signer02)
61+
assert.NoError(t, err)
62+
item02, err := itemSigner02.CreateAndSignItem([]byte("dd ee ff"), "", "", []types.Tag{
63+
{Name: "Content-Type", Value: "application/txt"},
64+
})
65+
assert.NoError(t, err)
66+
67+
// assemble bundle
68+
bundle, err := utils.NewBundle(item01, item02)
69+
assert.NoError(t, err)
70+
71+
// send to arweave
72+
wal, err := goar.NewWalletFromPath("jwkKey.json", "https://arweave.net")
73+
tx, err := wal.SendBundleTx(bundle.BundleBinary, []types.Tag{
74+
{Name: "App", Value: "goar"},
75+
})
76+
assert.NoError(t, err)
77+
t.Log(tx.ID)
78+
}
79+
80+
func TestBundleItemToArseeding(t *testing.T) {
81+
// sig item01 by ecc signer
82+
itemSigner01, err := goar.NewItemSigner(signer01)
83+
assert.NoError(t, err)
84+
item01, err := itemSigner01.CreateAndSignItem([]byte("aa bb cc"), "", "", []types.Tag{
85+
{Name: "Content-Type", Value: "application/txt"},
86+
{Name: "App-Version", Value: "2.0.0"},
87+
})
88+
assert.NoError(t, err)
89+
90+
// submit item to arseeding
91+
resp, err := utils.SubmitItemToArSeed(item01, "USDC", "https://seed.everpay.io")
92+
assert.NoError(t, err)
93+
t.Log("itemId: ", resp.ItemId)
94+
95+
// payment fee
96+
paySdk, err := sdk.New(signer01, "https://api.everpay.io")
97+
assert.NoError(t, err)
98+
tokenSymbol := resp.Currency
99+
amount, _ := new(big.Int).SetString(resp.Fee, 10)
100+
to := resp.Bundler
101+
everTx, err := paySdk.Transfer(tokenSymbol, amount, to, "")
102+
assert.NoError(t, err)
103+
t.Log("paymentId: ", everTx.HexHash())
104+
}
105+
106+
func TestBundleItemToBundlr(t *testing.T) {
107+
itemSigner01, err := goar.NewItemSigner(signer01)
108+
assert.NoError(t, err)
109+
item01, err := itemSigner01.CreateAndSignItem([]byte("aa bb cc"), "", "", []types.Tag{
110+
{Name: "Content-Type", Value: "application/txt"},
111+
{Name: "App-Version", Value: "2.0.0"},
112+
})
113+
assert.NoError(t, err)
114+
115+
// submit item to bundlr
116+
resp, err := utils.SubmitItemToBundlr(item01, "https://node1.bundlr.network")
117+
assert.NoError(t, err)
118+
t.Log("itemId: ", resp.Id)
41119
}
42120

43121
func TestVerifyBundleItem(t *testing.T) {

go.mod

+8-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ require (
66
github.com/btcsuite/btcutil v1.0.2
77
github.com/ethereum/go-ethereum v1.10.12
88
github.com/everFinance/arseeding v0.0.4-0.20220623092924-8b199287d941
9+
github.com/everFinance/everpay-go v0.0.1
910
github.com/everFinance/goether v1.1.7
1011
github.com/everFinance/gojwk v1.0.0
1112
github.com/everFinance/ttcrsa v1.1.3
@@ -25,12 +26,12 @@ require (
2526
github.com/edsrzf/mmap-go v1.0.0 // indirect
2627
github.com/everFinance/ethrpc v1.0.4 // indirect
2728
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect
29+
github.com/getsentry/sentry-go v0.11.0 // indirect
2830
github.com/go-logfmt/logfmt v0.5.0 // indirect
2931
github.com/go-ole/go-ole v1.2.1 // indirect
3032
github.com/go-stack/stack v1.8.1 // indirect
3133
github.com/golang/protobuf v1.4.3 // indirect
3234
github.com/golang/snappy v0.0.4 // indirect
33-
github.com/google/go-cmp v0.5.5 // indirect
3435
github.com/google/uuid v1.3.0 // indirect
3536
github.com/gorilla/websocket v1.4.2 // indirect
3637
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect
@@ -56,14 +57,20 @@ require (
5657
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
5758
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 // indirect
5859
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
60+
github.com/tidwall/gjson v1.12.1 // indirect
61+
github.com/tidwall/match v1.1.1 // indirect
62+
github.com/tidwall/pretty v1.2.0 // indirect
63+
github.com/tidwall/sjson v1.2.4 // indirect
5964
github.com/tklauser/go-sysconf v0.3.5 // indirect
6065
github.com/tklauser/numcpus v0.2.2 // indirect
6166
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef // indirect
6267
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
68+
golang.org/x/net v0.0.0-20211215060638-4ddde0e984e9 // indirect
6369
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
6470
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6 // indirect
6571
golang.org/x/text v0.3.6 // indirect
6672
google.golang.org/protobuf v1.23.0 // indirect
73+
gopkg.in/h2non/gentleman.v2 v2.0.5 // indirect
6774
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
6875
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
6976
gorm.io/datatypes v1.0.1 // indirect

0 commit comments

Comments
 (0)