/
simulate.go
72 lines (59 loc) · 2.16 KB
/
simulate.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
package ethereum
import (
"math/big"
"github.com/33cn/chain33/common/address"
"github.com/lianbaotong/ebrelayer/relayer/ethereum/ethtxs"
"github.com/lianbaotong/ebrelayer/relayer/events"
ebTypes "github.com/lianbaotong/ebrelayer/types"
"github.com/lianbaotong/ebrelayer/utils"
ethcommon "github.com/ethereum/go-ethereum/common"
)
var clientChainID = int64(0)
var bridgeBankAddr = "0x8afdadfc88a1087c9a1d6c0f5dd04634b87f303a"
func (ethRelayer *Relayer4Ethereum) SimLockFromEth(lock ebTypes.LockEthErc20) error {
amount := big.NewInt(1)
amount, _ = amount.SetString(utils.TrimZeroAndDot(lock.Amount), 10)
addr, err := address.NewAddrFromString(lock.Chain33Receiver)
if nil != err {
return err
}
lockEvent := &events.LockEvent{
From: ethcommon.HexToAddress(lock.OwnerKey),
To: addr.Hash160[:],
Token: ethcommon.HexToAddress(lock.TokenAddr),
Symbol: "ETH",
Value: amount,
Nonce: big.NewInt(1),
}
prophecyClaim, err := ethtxs.LogLockToEthBridgeClaim(lockEvent, clientChainID, bridgeBankAddr, "", 18)
if err != nil {
return err
}
ethRelayer.ethBridgeClaimChan <- prophecyClaim
return nil
}
func (ethRelayer *Relayer4Ethereum) SimBurnFromEth(burn ebTypes.Burn) error {
relayerLog.Info("SimBurnFromEth", "burn", burn)
amount := big.NewInt(1)
amount, _ = amount.SetString(utils.TrimZeroAndDot(burn.Amount), 10)
addr, err := address.NewAddrFromString(burn.Chain33Receiver)
if nil != err {
return err
}
burnEvent := &events.BurnEvent{
Token: ethcommon.HexToAddress(burn.TokenAddr), //ethcommon.Address
Symbol: "BTY",
Amount: amount,
OwnerFrom: ethcommon.HexToAddress(burn.OwnerKey), //将owner 作为地址来用,只是为了测试使用
Chain33Receiver: addr.Hash160[:], //[]byte
Nonce: big.NewInt(1), //*big.Int
}
// Parse the LogLock event's payload into a struct
prophecyClaim, err := ethtxs.LogBurnToEthBridgeClaim(burnEvent, clientChainID, bridgeBankAddr, "", 8)
if err != nil {
return err
}
relayerLog.Info("SimBurnFromEth", "Chain33Receiver", prophecyClaim.Chain33Receiver)
ethRelayer.ethBridgeClaimChan <- prophecyClaim
return nil
}