Copy $ npm install @ramper/react-native-evm react-native-get-random-values
Copy $ yarn add @ramper/react-native-evm react-native-get-random-values
You will need to register react-native-get-random-values and @ethersproject/shims in the entry file of your application, such as index.js:
Copy // Import the crypto getRandomValues shim (**BEFORE** the shims)
import 'react-native-get-random-values' ;
// Import the ethers shims (**BEFORE** ethers)
import '@ethersproject/shims' ;
Copy import { ethers } from 'ethers' ;
import { EtherTx } from '@ramper/react-native-evm' ;
Copy import { Transactions } from '@ramper/react-native-core' ;
Copy const provider = ethers .getDefaultProvider (
`https://polygon-mumbai.g.alchemy.com/v2/ ${ yourApiKey } `
);
Copy const value = ethers . utils .parseEther ( '0.0000001' );
try {
const transaction = await Transactions .signTransaction ({
serializedTx : await EtherTx .serializeTransactionRequest (
{
from : 'fromAddress' ,
to : 'toAddress' ,
value ,
} ,
provider
) ,
network : SUPPORTED_ETHEREUM_NETWORKS . MATICMUM ,
theme : 'light' ,
});
const deserializedTransaction = EtherTx .deserializeTransaction (transaction); =
// broadcast the Signed Transaction to the network:
const transaction = await provider .sendTransaction (
deserializedTransaction .transaction
);
} catch (error) {
// handle error
}
Copy try {
const signTypedDataResponse = await Transactions .signTypedData ({
serializedTx : await EtherTx .serializeSignTypedDataRequest (
{
name : 'Ether Mail' ,
version : '1' ,
chainId : 1 ,
verifyingContract : '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC' ,
} ,
{
Person : [
{ name : 'name' , type : 'string' } ,
{ name : 'wallet' , type : 'address' } ,
] ,
Mail : [
{ name : 'from' , type : 'Person' } ,
{ name : 'to' , type : 'Person' } ,
{ name : 'contents' , type : 'string' } ,
] ,
} ,
{
from : {
name : 'Cow' ,
wallet : '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826' ,
} ,
to : {
name : 'Bob' ,
wallet : '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB' ,
} ,
contents : 'Hello, Bob!' ,
}
) ,
network : SUPPORTED_ETHEREUM_NETWORKS . MATICMUM ,
});
const deserializedTypedData = EtherTx .deserializeTransaction (signResponse);
// handle response
} catch (error) {
// handle error
}
Copy try {
const signMessageResponse = await Transactions .signMessage ({
serializedTx : EtherTx .serializeMessage ({
message : 'Hello World' ,
method : 'eth_sign' ,
}) ,
network : SUPPORTED_ETHEREUM_NETWORKS . MATICMUM ,
theme : 'light' ,
});
const deserializedRespone =
EtherTx .deserializeTransaction (signMessageResponse);
// handle response
} catch (error) {
// handle error
}
Copy try {
const signPersonalMessageResponse = await Transactions .signMessage ({
serializedTx : EtherTx .serializeMessage ({
message : 'My email is john@doe.com - Thu, 22 Sep 2022 22:45:02 GMT' ,
method : 'personal_sign' ,
}) ,
network : SUPPORTED_ETHEREUM_NETWORKS . MATICMUM ,
theme : 'light' ,
});
const deserializedResponse = EtherTx .deserializeTransaction (
signPersonalMessageResponse
);
// handle response
} catch (error) {
// handle error
}
Copy const deserializedTx = EtherTx .deserializeTransaction (serializedTx);
Copy type DeserializedTx = {
transaction : string // Signed Transaction
msgs : any []
}