> For the complete documentation index, see [llms.txt](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jungle-toolkit.gitbook.io/evm-xcm-jungle-toolkit/build-an-evm+substrate-wallet-compatible-architecture-in-your-dapp/implement-multiple-wallet-support-on-your-dapp-front-end/sign-and-send-evm-transactions.md).

# Sign and send EVM transactions

In this section you'll use a provider, a signer, a contract ABI and a contract Instance to send a transaction using ethers.

```javascript
// Connect to Metamask
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();


const contractAddress = '0x123456789abcdef123456789abcdef123456789a'; // Replace with your contract address
const contractABI = [...]; // Replace with your contract ABI

const contract = new ethers.Contract(contractAddress, contractABI, signer);

async function getValue() {
    const result = await contract.getValue();
    console.log('Value:', result);
}

getValue();

async function setValue(newValue) {
    const transaction = await contract.setValue(newValue);
    await transaction.wait(); // Wait for the transaction to be mined
    console.log('Transaction Hash:', transaction.hash);
}

setValue('new value');

```
