Example¶
//this is an example of MetaMask web extension.
....
<!--import basic data of Ethereum contract, include abi & contract address.-->
<script src="eth-contract.js"></script>
<!--import ExtensionProxy-->
<script src="sealsc-web-extension-proxy.js"></script>
<!--import MetaMask wrapper which conform Seal SC web extension protocol-->
<script src="./sealsc-web-extension/sealsc-web-extension-metamask.js"></script>
....
async function loadAndTest() {
//load MetaMask wrapper to proxy
metamaskProxy = await sealscWebExtensionProxy
.load(sealscWebExtensionMetamask.metamask)
.then(p=>p.data)
//do the test
proxyTest(metamaskProxy, {
receiver: "A Ethereum address to receive test tokens.",
contractData: {
abi: ethAbi,
address: ethContractAddress,
},
transferData: {
amount: 1,
memo: '',
extra: null
},
transferTokenData: {
amount: 1.2
},
offChainData: {
method: "decimals"
}
})
}
}
async function proxyTest(proxy, data) {
let receiver = data.receiver
let contractData = data.contractData
let transferData = data.transferData
let transferTokenData = data.transferTokenData
let offChainData = data.offChainData
let loginCheck = await proxy.isLogin()
console.log("login: ", loginCheck)
if(!loginCheck.data) {
let link = await proxy.link()
console.log("link: ", link)
if(!link.data) {
console.log("need login")
return
}
}
let transferResult = await proxy.transfer(receiver, transferData.amount, transferData.memo, transferData.extra)
console.log("transfer: ", transferResult)
let contractLoadResult = await proxy.loadContract(contractData.abi, contractData.address)
console.log("contract: ", contractLoadResult)
if(!contractLoadResult.data) {
console.log("contract load failed")
return
}
let contractWrapper = contractLoadResult.data
let transferTokenResult = await proxy.transferToken(contractWrapper, receiver, transferTokenData.amount, transferTokenData.extra)
console.log("transfer token: ", transferTokenResult)
let offChainCallResult = await proxy.offChainCall(contractWrapper, offChainData.method)
console.log("off chain call: ", offChainCallResult)
}
This example is using MetaMask Wrapper sealsc-web-extension-metamask.