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  }