Skip to content

Commit 1520404

Browse files
committed
feat(): add warp cli
1 parent 4a73961 commit 1520404

File tree

5 files changed

+87
-2
lines changed

5 files changed

+87
-2
lines changed

client.go

+26
Original file line numberDiff line numberDiff line change
@@ -1026,3 +1026,29 @@ func (c *Client) DataSyncRecord(endOffset string, intervalsNum int) ([]string, e
10261026
}
10271027
return result, nil
10281028
}
1029+
1030+
func (c *Client) SubmitToWarp(tx *types.Transaction) ([]byte, error) {
1031+
by, err := json.Marshal(tx)
1032+
if err != nil {
1033+
return nil, err
1034+
}
1035+
u, err := url.Parse(c.url)
1036+
if err != nil {
1037+
return nil, err
1038+
}
1039+
1040+
u.Path = path.Join(u.Path, "/gateway/sequencer/register")
1041+
req, err := http.NewRequest("POST", u.String(), bytes.NewReader(by))
1042+
if err != nil {
1043+
return nil, err
1044+
}
1045+
req.Header.Set("Content-Type", "application/json")
1046+
req.Header.Set("Accept-Encoding", "gzip, deflate, br")
1047+
req.Header.Set("Accept", "application/json")
1048+
resp, err := c.client.Do(req)
1049+
if err != nil {
1050+
return nil, err
1051+
}
1052+
defer resp.Body.Close()
1053+
return ioutil.ReadAll(resp.Body)
1054+
}

utils/pst.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package utils
22

33
import "github.com/everFinance/goar/types"
44

5-
func PstTransferTags(contractId string, target string, qty int64) ([]types.Tag, error) {
5+
func PstTransferTags(contractId string, target string, qty int64, warp bool) ([]types.Tag, error) {
66
input := types.Input{
77
"function": "transfer",
88
"target": target,
@@ -20,5 +20,10 @@ func PstTransferTags(contractId string, target string, qty int64) ([]types.Tag,
2020
{Name: "Contract", Value: contractId},
2121
{Name: "Input", Value: inputStr},
2222
}
23+
24+
if warp {
25+
pstTags = append(pstTags, types.Tag{Name: "SDK", Value: "Warp"})
26+
}
27+
2328
return pstTags, nil
2429
}

wallet.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func (w *Wallet) SendPst(contractId string, target string, qty *big.Int, customT
206206
}
207207

208208
// assemble tx tags
209-
swcTags, err := utils.PstTransferTags(contractId, target, qty.Int64())
209+
swcTags, err := utils.PstTransferTags(contractId, target, qty.Int64(), false)
210210
if err != nil {
211211
return types.Transaction{}, err
212212
}

wallet_test.go

+12
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,18 @@ func Test_SendPstTransfer(t *testing.T) {
114114
// t.Log(arTx.ID)
115115
}
116116

117+
func TestWallet_WarpTransfer(t *testing.T) {
118+
warpGateWay := "https://gateway.warp.cc"
119+
w, err := NewWalletFromPath("./wallet/account1.json", warpGateWay)
120+
assert.NoError(t, err)
121+
contractId := "usjm4PCxUd5mtaon7zc97-dt-3qf67yPyqgzLnLqk5A" // vrt
122+
target := "Ii5wAMlLNz13n26nYY45mcZErwZLjICmYd46GZvn4ck"
123+
qty := int64(2)
124+
id, err := w.WarpTransfer(contractId, target, qty)
125+
assert.NoError(t, err)
126+
t.Log(id)
127+
}
128+
117129
func TestCreateUploader(t *testing.T) {
118130
w, err := NewWalletFromPath("./wallet/account1.json", "https://arweave.net")
119131
assert.NoError(t, err)

warp.go

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package goar
2+
3+
import (
4+
"fmt"
5+
"github.com/everFinance/goar/types"
6+
"github.com/everFinance/goar/utils"
7+
"github.com/tidwall/gjson"
8+
"math/rand"
9+
"strconv"
10+
)
11+
12+
func (w *Wallet) WarpTransfer(contractId, target string, qty int64) (id string, err error) {
13+
tags, err := utils.PstTransferTags(contractId, target, qty, true)
14+
if err != nil {
15+
return
16+
}
17+
data := strconv.Itoa(rand.Intn(9999))
18+
19+
tx := &types.Transaction{
20+
Format: 2,
21+
ID: "",
22+
LastTx: "p7vc1iSP6bvH_fCeUFa9LqoV5qiyW-jdEKouAT0XMoSwrNraB9mgpi29Q10waEpO", // default
23+
Owner: w.Signer.Owner(),
24+
Tags: utils.TagsEncode(tags),
25+
Target: "",
26+
Quantity: "0",
27+
Data: utils.Base64Encode([]byte(data)),
28+
DataSize: fmt.Sprintf("%d", len(data)),
29+
DataRoot: "",
30+
Reward: "0",
31+
Signature: "",
32+
}
33+
if err = w.Signer.SignTx(tx); err != nil {
34+
return
35+
}
36+
// send to wrap gateway
37+
result, err := w.Client.SubmitToWarp(tx) // {"id":"BQQyqbsULPNpyKgwVSSn8z0-3Km_y1GPMiLU1-eR_lc"}
38+
if err != nil {
39+
return
40+
}
41+
return gjson.ParseBytes(result).Get("id").String(), nil
42+
}

0 commit comments

Comments
 (0)