I try to call the transferMargin() function from the Synthetix Contract on Optimism Kovan through react/javascript(web3.js) and Metamask. I want to use on Button click the transferMargin function from the deployed smart contract but its not working iam not sure what is wrong with my code i have copied the full ABI from the contract and the address
This is my code:
import react, { useState } from "react";
import { Component } from 'react';
import Web3 from 'web3'
export default function KwentaOptimism()
{
let provider = window.ethereum;
let selectedAccount;
if (typeof provider !== 'undefined') {
provider
.request({method: 'eth_requestAccounts' })
.then((accounts) => {
selectedAccount = accounts[0];
console.log(`Selected account is ${selectedAccount}`);
})
}
const web3 = new Web3(provider);
async function loadContract(){
let address = "0x1e28378F64bC04E872a9D01Eb261926717346F98";
let chainlinkFutureContractABI = [{"constant":false,"inputs":[{"internalType":"int256","name":"marginDelta","type":"int256"}],"name":"transferMargin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}];
var Contract = require('web3-eth-contract');
var chainlinkFutureContract = new Contract(chainlinkFutureContractABI, address);
return await chainlinkFutureContract;
}
async function openLong(){
let linkContract = await loadContract();
linkContract.methods.transferMargin("100000000000000000000").send({from: '0xce05626e35c053995d4988b75af85e2eb7251b3c'});
}
return(
<div>
<br/>
<button onclick = {openLong()}>Chainlink Long</button>
</div>
)
}
The console error is gone but the onclick function openLong() is called automtically by react when i start the server or refresh the page. But the function should only be called when i click the button "Chainlink Long". Why this strange behavior?