feat: use window.ethereum & Web3 to send transaction
This commit is contained in:
parent
56360828d3
commit
bce3825c48
6248
package-lock.json
generated
6248
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -11,7 +11,8 @@
|
|||||||
"@metamask/detect-provider": "^2.0.0",
|
"@metamask/detect-provider": "^2.0.0",
|
||||||
"bootstrap": "^5.2.3",
|
"bootstrap": "^5.2.3",
|
||||||
"vue": "^3.2.47",
|
"vue": "^3.2.47",
|
||||||
"vue-router": "^4.1.6"
|
"vue-router": "^4.1.6",
|
||||||
|
"web3": "^1.8.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vitejs/plugin-vue": "^4.0.0",
|
"@vitejs/plugin-vue": "^4.0.0",
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import detectEthereumProvider from '@metamask/detect-provider'
|
import detectEthereumProvider from '@metamask/detect-provider'
|
||||||
|
import Web3 from 'web3';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MyComponent',
|
name: 'MyComponent',
|
||||||
@ -29,21 +30,31 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
withdraw() {
|
async withdraw() {
|
||||||
|
const web3 = new Web3()
|
||||||
const encodeFunctionCall = web3.eth.abi.encodeFunctionCall({
|
const encodeFunctionCall = web3.eth.abi.encodeFunctionCall({
|
||||||
name: "withdraw",
|
name: "withdraw",
|
||||||
type: "function",
|
type: "function",
|
||||||
inputs: [{
|
inputs: [{
|
||||||
type: "unit256",
|
type: "uint256",
|
||||||
name: "amount"
|
name: "amount"
|
||||||
}, [95000000000000000]]
|
}]
|
||||||
}, [123])
|
}, [web3.utils.toBN(this.amount)])
|
||||||
const transactionParameters = {
|
const transactionParameters = {
|
||||||
from: ethereum.selectedAddress,
|
from: ethereum.selectedAddress,
|
||||||
to: '0x629fe41fd008a169fc073ac7a016401dfd7f17d9',
|
to: '0x629fe41fd008a169fc073ac7a016401dfd7f17d9',
|
||||||
data: encodeFunctionCall
|
data: encodeFunctionCall,
|
||||||
|
value: '0x00',
|
||||||
}
|
}
|
||||||
console.log(encodeFunctionCall)
|
console.log(encodeFunctionCall)
|
||||||
|
console.log(transactionParameters)
|
||||||
|
|
||||||
|
const txHash = await ethereum.request({
|
||||||
|
method: 'eth_sendTransaction',
|
||||||
|
params: [transactionParameters]
|
||||||
|
})
|
||||||
|
|
||||||
|
print(txHash)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -74,11 +85,11 @@ export default {
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm">
|
<div class="col-sm">
|
||||||
<form>
|
<form>
|
||||||
<input type='number' class="form-control" v-model="amount" >
|
<input type='text' class="form-control" v-model="amount" >
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm">
|
<div class="col-sm">
|
||||||
<button class='btn btn-info' v-on:click="withdraw"> withdraw ETH ({{amount}} wei) </button>
|
<button class='btn btn-info' v-on:click="withdraw"> withdraw ETH ({{amount}} wei = {{Number(BigInt(amount))/10**18}} ETH) </button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user