github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/calls/contracts/deposit/deposit.go (about) 1 package deposit 2 3 import ( 4 "math/big" 5 6 "github.com/ethereum/go-ethereum/common/math" 7 ) 8 9 func constructMainDepositData(tokenStats *big.Int, destRecipient []byte) []byte { 10 var data []byte 11 data = append(data, math.PaddedBigBytes(tokenStats, 32)...) // Amount (ERC20) or Token Id (ERC721) 12 data = append(data, math.PaddedBigBytes(big.NewInt(int64(len(destRecipient))), 32)...) // length of recipient 13 data = append(data, destRecipient...) // Recipient 14 return data 15 } 16 17 func ConstructErc20DepositData(destRecipient []byte, amount *big.Int) []byte { 18 data := constructMainDepositData(amount, destRecipient) 19 return data 20 } 21 22 func ConstructErc20DepositDataWithPriority(destRecipient []byte, amount *big.Int, priority uint8) []byte { 23 data := constructMainDepositData(amount, destRecipient) 24 data = append(data, math.PaddedBigBytes(big.NewInt(int64(len([]uint8{priority}))), 1)...) // Length of priority 25 data = append(data, math.PaddedBigBytes(big.NewInt(int64(priority)), 1)...) // Priority 26 return data 27 } 28 29 func ConstructErc721DepositData(destRecipient []byte, tokenId *big.Int, metadata []byte) []byte { 30 data := constructMainDepositData(tokenId, destRecipient) 31 data = append(data, math.PaddedBigBytes(big.NewInt(int64(len(metadata))), 32)...) // Length of metadata 32 data = append(data, metadata...) // Metadata 33 return data 34 } 35 36 func ConstructErc721DepositDataWithPriority(destRecipient []byte, tokenId *big.Int, metadata []byte, priority uint8) []byte { 37 data := constructMainDepositData(tokenId, destRecipient) 38 data = append(data, math.PaddedBigBytes(big.NewInt(int64(len(metadata))), 32)...) // Length of metadata 39 data = append(data, metadata...) // Metadata 40 data = append(data, math.PaddedBigBytes(big.NewInt(int64(len([]uint8{priority}))), 1)...) // Length of priority 41 data = append(data, math.PaddedBigBytes(big.NewInt(int64(priority)), 1)...) // Priority 42 return data 43 } 44 45 func ConstructGenericDepositData(metadata []byte) []byte { 46 var data []byte 47 data = append(data, math.PaddedBigBytes(big.NewInt(int64(len(metadata))), 32)...) // Length of metadata 48 data = append(data, metadata...) // Metadata 49 return data 50 }