transferDaiToDAIpOffChain method
Implementation
Future<Map<String, dynamic>> transferDaiToDAIpOffChain(
String walletAddress,
num tokenAmount,
int tokenDecimals, {
String? network = "fuse",
}) async {
EthereumAddress wallet = EthereumAddress.fromHex(walletAddress);
Decimal tokensAmountDecimal = Decimal.parse(tokenAmount.toString());
Decimal decimals = Decimal.parse(pow(10, tokenDecimals).toString());
BigInt amount = BigInt.parse((tokensAmountDecimal * decimals).toString());
String nonce = await getNonceForRelay();
print('nonce: $nonce');
DeployedContract contract = await _contract(
'DAIPointsManager',
_daiPointsManagerContractAddress,
);
Uint8List data = contract.function('getDAIPoints').encodeCall(
[wallet, amount],
);
String encodedData = '0x' + HEX.encode(data);
print('encodedData: $encodedData');
String signature = await signOffChain(
_daiPointsManagerContractAddress,
walletAddress,
BigInt.from(0),
encodedData,
nonce,
BigInt.from(0),
BigInt.from(_defaultGasLimit),
);
return {
"walletAddress": walletAddress,
"methodData": encodedData,
"nonce": nonce,
"network": network,
"gasPrice": 0,
"gasLimit": _defaultGasLimit,
"signature": signature,
"walletModule": "DAIPointsManager"
};
}