/sendTransactionToEvmContractWithRawHex
curl --request POST \
--url 'http://1.1.1.1/sendTransactionToEvmContractWithRawHex?account_id=1&contract_address=0xE4Fd4d9190075de22826DdeC437594d27fb549Ab&amount=6000&gas_price=1&gas_limit=21500&raw_data_in_hex=0xa9059cbb000000000000000000000000963d0aef2a6ba868b38cb032f2a81db145c467fb0000000000000000000000000000000000000000000000056bc75e2d63100000&validate_transaction=False&description=example&specificFromAddress=0x862842A56B5D5F30B7d519cCe683983F57499cE6&evm_coin_symbol=ETH' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"AccountId": 1,
"CoinType": "ETH",
"DataForContract": {
"FunctionName": "transfer",
"ParametersFieldsTypesAndValues": [
{
"ParameterType": "address",
"ParameterValue": "0xEDF9C138F990b4ed9b7cb83F6ad8fF76017572B9"
}
],
"validateTransaction": "true"
},
"Fee": {
"GasLimit": 21500,
"GasPrice": "100000000000"
},
"IsMetaMaskTransaction": "False",
"SpecificFromAddress": "0x862842A56B5D5F30B7d519cCe683983F57499cE6",
"Transactions": [
{
"AmountToTransfer": "6000",
"DestinationAddress": "0x04e5C3F98ac6711baDd357A76E8FEAe226Dd60c7"
}
],
"UserDescription": "transferExample",
"Meta": {
"FunctionName": "sendTransactionToEvmContractWithRawHex",
"RandomData": "288cd49d4b8bf00e7d6114b78d5668d5581d6b953fafef779133caa844cd4229",
"Destination": "b9cb8afe52f1d52521cf2b62dfe12146156ad5328f83c62c20c7da81b263356a61340de745c858998544c041798b01c2f4fac31bebe52a19280a32cd57d6d374ea",
"Time": "2021-02-07T18:37:46.948Z",
"Source": "048b99461a70a49abe63fd585cb224177a22a92d2e9e4ddfbc0027887bee9d1843388f42a3eb2e740565e115ad8b7981abf59e3b03b771f4b063b53c517d7a9d99",
"AccessToken": "51311c84d2c8fd2fafbe56ceb1fb30a99d3417abfc55769577338ab286798087"
}
}'Smart Contracts
This is an explanation on how to access smart contracts on the EVM and Tezos networks secured by GK8's MPC This is very similar to sending a normal transaction except of:
- Instead of sending using the sendTransaction, use the following APIs:
- For EVM contracts, use sendTransactionToEvmContractWithContractInfo or sendTransactionToEvmContractWithRawHex APIs. sendTransactionToEvmContractWithContractInfo is meant where you know the parameters you want to send to the function and the ABI. sendTransactionToEvmContractWithRawHex is meant where this data is already compiled to binary and ready to be sent . Notice that sending funds to the fallback function is done with sendTransaction.
- For Tezos contracts, use sendTransactionToTezosContractWithContractInfo API.
- Transfer with amount 0 is allowed now as long as it sending to a smart contract.
- When sending transaction to an EVM contract, low gas limit is forbidden, 21500 is tested, higher fee is recommended
- It is highly recommended to send transactions with flag validateTransaction so that the system can run eth_call(EVM) / dry-run(Tezos) and prevent wasting gas.
It is important to understand that all the things in GK8 system also applies on smart contracts. Limitation, Policies approvals and more.
Please read the documentation on sendTransactionToEvmContractWithContractInfo, sendTransactionToEvmContractWithRawHex and sendTransactionToTezosContractWithContractInfo for more details.
- This function refers only to EVMs
- return - Dict ready to be sent to the MPC by the function sendTransaction
** NOTE: success or failure in this api call does not necessarily means success or failure in the transaction itself.
** for example, the transaction may work by the response to the client can be lost in communication (if the internet is down for the client).
** another example is that the transaction was approved here but failed in the signing process To know the status of the transaction you can access the function getTransactionByToken.
To get the token to send those functions you should call getCurrentToken one action BEFORE sendTransaction: myTokenToStoreInTheDb = user.getCurrentToken() sendTransactionToEvmContractWithRawHex(...) ..... user.getTransactionByToken(myTokenToStoreInTheDb,"ETH")
example:
- ETH: sendTransactionToEvmContractWithRawHex(1,"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe","6000","50000000000",70000, "0x48656c6c6f2c20776f726c64210000000000000000000000000000000000000000",True,False,"example","0xe75fb554e433e03763a1560646ee22dcb74e5274b34c5ad644e7c0f619a7e1d0","ETH","1000000000") """