-
Notifications
You must be signed in to change notification settings - Fork 62
/
main.go
80 lines (72 loc) · 2.43 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main
import (
"context"
"github.com/0xPolygonHermez/zkevm-bridge-service/etherman"
"github.com/0xPolygonHermez/zkevm-bridge-service/log"
clientUtils "github.com/0xPolygonHermez/zkevm-bridge-service/test/client"
"github.com/0xPolygonHermez/zkevm-bridge-service/utils"
"github.com/ethereum/go-ethereum/common"
)
const (
l2BridgeAddr = "0xCca6ECD73932e49633B9307e1aa0fC174525F424"
l2AccHexAddress = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
l2AccHexPrivateKey = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
l2NetworkURL = "http://localhost:8123"
bridgeURL = "http://localhost:8080"
mtHeight = 32
)
func main() {
ctx := context.Background()
c, err := utils.NewClient(ctx, l2NetworkURL, common.HexToAddress(l2BridgeAddr))
if err != nil {
log.Fatal("Error: ", err)
}
auth, err := c.GetSigner(ctx, l2AccHexPrivateKey)
if err != nil {
log.Fatal("Error: ", err)
}
// Get Claim data
cfg := clientUtils.Config{
L1NodeURL: l2NetworkURL,
L2NodeURL: l2NetworkURL,
BridgeURL: bridgeURL,
L2BridgeAddr: common.HexToAddress(l2BridgeAddr),
}
client, err := clientUtils.NewClient(ctx, cfg)
if err != nil {
log.Fatal("Error: ", err)
}
deposits, _, err := client.GetBridges(l2AccHexAddress, 0, 10) //nolint
if err != nil {
log.Fatal("Error: ", err)
}
bridgeData := deposits[0]
proof, err := client.GetMerkleProof(deposits[0].NetworkId, deposits[0].DepositCnt)
if err != nil {
log.Fatal("error: ", err)
}
log.Debug("bridge: ", bridgeData)
log.Debug("mainnetExitRoot: ", proof.MainExitRoot)
log.Debug("rollupExitRoot: ", proof.RollupExitRoot)
var smtProof, smtRollupProof [mtHeight][32]byte
for i := 0; i < len(proof.MerkleProof); i++ {
log.Debug("smtProof: ", proof.MerkleProof[i])
smtProof[i] = common.HexToHash(proof.MerkleProof[i])
log.Debug("smtRollupProof: ", proof.MerkleProof[i])
smtRollupProof[i] = common.HexToHash(proof.RollupMerkleProof[i])
}
globalExitRoot := ðerman.GlobalExitRoot{
ExitRoots: []common.Hash{common.HexToHash(proof.MainExitRoot), common.HexToHash(proof.RollupExitRoot)},
}
log.Info("Sending claim tx...")
err = c.SendClaim(ctx, bridgeData, smtProof, smtRollupProof, globalExitRoot, auth)
if err != nil {
log.Fatal("error: ", err)
}
log.Info("Success!")
balance, err := c.Client.BalanceAt(ctx, common.HexToAddress(l2AccHexAddress), nil)
if err != nil {
log.Fatal("error getting balance: ", err)
}
log.Info("L2 balance: ", balance)
}