-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeployer.go
60 lines (49 loc) · 1.2 KB
/
deployer.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
package main
import (
"context"
"demo/contract"
"fmt"
"math/big"
"os"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/siddontang/go/log"
)
func Deploy() {
var err error
_, err = os.ReadFile("addr.txt")
if err == nil {
fmt.Println("ZkBlob contract already deployed, no need to deploy again")
return
}
ctx := context.Background()
chainId, err := client.ChainID(ctx)
if err != nil {
log.Fatal(err)
}
auth, err := bind.NewKeyedTransactorWithChainID(privateKey, chainId)
if err != nil {
log.Fatal(err)
}
nonce, err := client.PendingNonceAt(ctx, auth.From)
if err != nil {
log.Fatal(err)
}
auth.Nonce = big.NewInt(int64(nonce))
addr, tx, _, err := contract.DeployZkBlob(auth, client, common.HexToAddress("0x69eC1D6E8D4EDf341F1a4ab6d6141506A2E38acC"))
if err != nil {
log.Fatal(err)
}
// 等待交易被确认
_, err = bind.WaitMined(context.Background(), client, tx)
if err != nil {
panic(err)
}
auth.Nonce = nil
auth.Value = nil
fmt.Printf("Deploy tx: %v\n", tx.Hash().Hex())
fmt.Printf("ZkBlob Addr: %v\n", addr.Hex())
if err = os.WriteFile("addr.txt", []byte(addr.Hex()), 0644); err != nil {
panic(err)
}
}