将链上交互改为合约
This commit is contained in:
parent
8adac6b38b
commit
af2f076ad6
@ -18,3 +18,4 @@ VUE_APP_APP_NAME = 'CF UAW'
|
|||||||
|
|
||||||
# 铭文的验证地址
|
# 铭文的验证地址
|
||||||
VUE_APP_SCRIPTION_ADDRESS='0x50A8e60041A206AcaA5F844a1104896224be6F39'
|
VUE_APP_SCRIPTION_ADDRESS='0x50A8e60041A206AcaA5F844a1104896224be6F39'
|
||||||
|
VUE_APP_CONTRACT='0x0Fd13D2CD0B6c679B6f92590E0b91C18DDe7BD3A'
|
||||||
|
@ -16,3 +16,4 @@ VUE_APP_CHAIN_ID = '5611'
|
|||||||
VUE_APP_APP_NAME = 'CF UAW'
|
VUE_APP_APP_NAME = 'CF UAW'
|
||||||
|
|
||||||
VUE_APP_SCRIPTION_ADDRESS='0xcd4bb3402f1a444a1af10f31946ed37dac0eac4d'
|
VUE_APP_SCRIPTION_ADDRESS='0xcd4bb3402f1a444a1af10f31946ed37dac0eac4d'
|
||||||
|
VUE_APP_CONTRACT='0x0Fd13D2CD0B6c679B6f92590E0b91C18DDe7BD3A'
|
@ -14,7 +14,7 @@ export const sendOpenChest = async (address, chestId) => {
|
|||||||
* @param {*} val
|
* @param {*} val
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export const sendToChain = async (type, address, val) => {
|
export const sendToChainScription = async (type, address, val) => {
|
||||||
const storeageKey = `${address}_${type}_${val || 'default'}`
|
const storeageKey = `${address}_${type}_${val || 'default'}`
|
||||||
if (localStorage.getItem(storeageKey)) {
|
if (localStorage.getItem(storeageKey)) {
|
||||||
return
|
return
|
||||||
@ -37,6 +37,31 @@ export const sendToChain = async (type, address, val) => {
|
|||||||
return storeageKey
|
return storeageKey
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const chainMethods = {
|
||||||
|
'chest_open': 'chainOpenBox',
|
||||||
|
'explore': 'chainExplore',
|
||||||
|
'task_claim': 'chainClaimTask',
|
||||||
|
'check': 'chainCheckIn',
|
||||||
|
'chest_enhance': 'enhanceBox',
|
||||||
|
}
|
||||||
|
export const sendToChain = async (type, address, val) => {
|
||||||
|
if (!chainMethods[type]) {
|
||||||
|
throw new Error('Invalid chain method')
|
||||||
|
}
|
||||||
|
const storeageKey = `${address}_${type}_${val || 'default'}`
|
||||||
|
if (localStorage.getItem(storeageKey)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (store.state.wallet.chainId+'' !== process.env.VUE_APP_CHAIN_ID){
|
||||||
|
await new Wallet().changeChain()
|
||||||
|
}
|
||||||
|
let chainRes = await new Wallet()[chainMethods[type]](address, val)
|
||||||
|
if (!chainRes?.transactionHash) {
|
||||||
|
throw new Error('Failed to claim task')
|
||||||
|
}
|
||||||
|
localStorage.setItem(storeageKey, chainRes.transactionHash)
|
||||||
|
return storeageKey
|
||||||
|
}
|
||||||
|
|
||||||
// 探索
|
// 探索
|
||||||
export const sendExplore = async (address, explore_id) => {
|
export const sendExplore = async (address, explore_id) => {
|
||||||
|
@ -27,3 +27,14 @@ export function formatShowAddress(address) {
|
|||||||
if (address.length < 8) return address
|
if (address.length < 8) return address
|
||||||
return address.slice(0, 4) + '...' + address.slice(-4)
|
return address.slice(0, 4) + '...' + address.slice(-4)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function base64ToHex(str) {
|
||||||
|
const raw = atob(str);
|
||||||
|
let result = '';
|
||||||
|
for (let i = 0; i < raw.length; i++) {
|
||||||
|
const hex = raw.charCodeAt(i).toString(16);
|
||||||
|
result += (hex.length === 2 ? hex : '0' + hex);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
496
src/wallet/abi.js
Normal file
496
src/wallet/abi.js
Normal file
@ -0,0 +1,496 @@
|
|||||||
|
export const treasureAbi = [
|
||||||
|
{
|
||||||
|
inputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'constructor',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
anonymous: false,
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
indexed: true,
|
||||||
|
internalType: 'address',
|
||||||
|
name: 'user',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
indexed: true,
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'action',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
indexed: false,
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'value',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'ActionEvent',
|
||||||
|
type: 'event',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
anonymous: false,
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
indexed: true,
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'duration',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'DurationUpdated',
|
||||||
|
type: 'event',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
anonymous: false,
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
indexed: true,
|
||||||
|
internalType: 'address',
|
||||||
|
name: 'previousOwner',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
indexed: true,
|
||||||
|
internalType: 'address',
|
||||||
|
name: 'newOwner',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'OwnershipTransferred',
|
||||||
|
type: 'event',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
anonymous: false,
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
indexed: false,
|
||||||
|
internalType: 'bool',
|
||||||
|
name: 'isPaused',
|
||||||
|
type: 'bool',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'StateUpdated',
|
||||||
|
type: 'event',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
anonymous: false,
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
indexed: true,
|
||||||
|
internalType: 'address',
|
||||||
|
name: 'verifier',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'VerifierUpdated',
|
||||||
|
type: 'event',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: 'signer',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'bytes32',
|
||||||
|
name: 'hash',
|
||||||
|
type: 'bytes32',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'bytes',
|
||||||
|
name: 'signature',
|
||||||
|
type: 'bytes',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'checkSigner',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'pure',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'checkinHistory',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'claimTaskHistory',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [],
|
||||||
|
name: 'duration',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'enhanceHistory',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'exploreHistory',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [],
|
||||||
|
name: 'isPaused',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'bool',
|
||||||
|
name: '',
|
||||||
|
type: 'bool',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [],
|
||||||
|
name: 'minDuration',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'openBoxHistory',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [],
|
||||||
|
name: 'owner',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'view',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [],
|
||||||
|
name: 'renounceOwnership',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: 'newOwner',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'transferOwnership',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'valNew',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'updateDuation',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'bool',
|
||||||
|
name: '_isPaused',
|
||||||
|
type: 'bool',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'updatePaused',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '_verifier',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'updateVerifier',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [],
|
||||||
|
name: 'dailyCheckin',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'step',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'explore',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'boxId',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'enhanceBox',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'boxId',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'openBox',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'taskId',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'claimTaskReward',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'actionType',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'val',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'signTime',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: 'saltNonce',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'bytes',
|
||||||
|
name: 'signature',
|
||||||
|
type: 'bytes',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'generalAction',
|
||||||
|
outputs: [],
|
||||||
|
stateMutability: 'nonpayable',
|
||||||
|
type: 'function',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '_user',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '_type',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '_val',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'address',
|
||||||
|
name: '_contract',
|
||||||
|
type: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '_chainId',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '_signTime',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
internalType: 'uint256',
|
||||||
|
name: '_saltNonce',
|
||||||
|
type: 'uint256',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: 'getMessageHash',
|
||||||
|
outputs: [
|
||||||
|
{
|
||||||
|
internalType: 'bytes32',
|
||||||
|
name: '',
|
||||||
|
type: 'bytes32',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
stateMutability: 'pure',
|
||||||
|
type: 'function',
|
||||||
|
constant: true,
|
||||||
|
},
|
||||||
|
];
|
@ -5,9 +5,10 @@ import { loginNonce, hexToBase58, aesEncrypt, loginWithSignature } from '@/utils
|
|||||||
|
|
||||||
import { SiweMessage } from '@/utils/siwe.js';
|
import { SiweMessage } from '@/utils/siwe.js';
|
||||||
import { GlobalData } from '@/utils/GlobalData.js';
|
import { GlobalData } from '@/utils/GlobalData.js';
|
||||||
import { parseTokenData } from '@/utils/utils.js';
|
import { parseTokenData, base64ToHex } from '@/utils/utils.js';
|
||||||
import { setToken } from '@/utils/cookies.js';
|
import { setToken } from '@/utils/cookies.js';
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
|
import { treasureAbi } from './abi.js'
|
||||||
|
|
||||||
// Wallet Connect初始化
|
// Wallet Connect初始化
|
||||||
import { EthereumProvider } from '@walletconnect/ethereum-provider';
|
import { EthereumProvider } from '@walletconnect/ethereum-provider';
|
||||||
@ -262,8 +263,8 @@ export class Wallet {
|
|||||||
|
|
||||||
async sendScription(address, dataStr){
|
async sendScription(address, dataStr){
|
||||||
const data = Web3.utils.utf8ToHex(dataStr)
|
const data = Web3.utils.utf8ToHex(dataStr)
|
||||||
const provider = new Web3(this.provider);
|
const web3 = this.web3
|
||||||
let gasPrice = await provider.eth.getGasPrice()
|
let gasPrice = await web3.eth.getGasPrice()
|
||||||
gasPrice = gasPrice * 2n
|
gasPrice = gasPrice * 2n
|
||||||
// const gasPrice = 100000000n;
|
// const gasPrice = 100000000n;
|
||||||
console.log('gasPrice: ',gasPrice)
|
console.log('gasPrice: ',gasPrice)
|
||||||
@ -274,9 +275,73 @@ export class Wallet {
|
|||||||
value: '0x0',
|
value: '0x0',
|
||||||
data
|
data
|
||||||
}
|
}
|
||||||
let gasLimit = await provider.eth.estimateGas(sendObj)
|
let gasLimit = await web3.eth.estimateGas(sendObj)
|
||||||
console.log('gasLimit: ', gasLimit,sendObj)
|
console.log('gasLimit: ', gasLimit,sendObj)
|
||||||
Object.assign(sendObj, {gasPrice, gasLimit})
|
Object.assign(sendObj, {gasPrice, gasLimit})
|
||||||
return provider.eth.sendTransaction(sendObj)
|
return web3.eth.sendTransaction(sendObj)
|
||||||
|
}
|
||||||
|
get web3() {
|
||||||
|
return new Web3(this.provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
initInstance(web3, address, abi, user, ) {
|
||||||
|
// const web3 = new Web3(this.provider);
|
||||||
|
return new web3.eth.Contract(abi, address, { from: user });
|
||||||
|
}
|
||||||
|
|
||||||
|
async chainCheckIn(address) {
|
||||||
|
let web3 = this.web3;
|
||||||
|
const instance = this.initInstance(web3, process.env.VUE_APP_CONTRACT, treasureAbi, address);
|
||||||
|
let gasPrice = await web3.eth.getGasPrice()
|
||||||
|
console.log('chainCheckIn gasPrice: ', gasPrice)
|
||||||
|
gasPrice = gasPrice * 2n
|
||||||
|
let gasLimit = await instance.methods.dailyCheckin().estimateGas();
|
||||||
|
return instance.methods.dailyCheckin().send({ from: address, gasPrice, gasLimit });
|
||||||
|
}
|
||||||
|
|
||||||
|
async chainExplore(address, exploreId) {
|
||||||
|
let web3 = this.web3;
|
||||||
|
let idBN = web3.utils.toBigInt('0x'+exploreId)
|
||||||
|
const instance = this.initInstance(web3, process.env.VUE_APP_CONTRACT, treasureAbi, address);
|
||||||
|
let gasPrice = await web3.eth.getGasPrice()
|
||||||
|
gasPrice = gasPrice * 2n
|
||||||
|
let gasLimit = await instance.methods.explore(idBN).estimateGas({ from: address });
|
||||||
|
return instance.methods.explore(idBN).send({ from: address, gasPrice, gasLimit });
|
||||||
|
}
|
||||||
|
|
||||||
|
async enhanceBox(address, shareCode) {
|
||||||
|
let web3 = this.web3;
|
||||||
|
const codeHex = shareCode.split("")
|
||||||
|
.map(c => c.charCodeAt(0).toString(16).padStart(2, "0"))
|
||||||
|
.join("");
|
||||||
|
let codeBn = web3.utils.toBigInt('0x'+codeHex)
|
||||||
|
const instance = this.initInstance(web3, process.env.VUE_APP_CONTRACT, treasureAbi, address);
|
||||||
|
let gasPrice = await web3.eth.getGasPrice()
|
||||||
|
gasPrice = gasPrice * 2n
|
||||||
|
let gasLimit = await instance.methods.enhanceBox(codeBn).estimateGas({ from: address });
|
||||||
|
return instance.methods.enhanceBox(codeBn).send({ from: address, gasPrice, gasLimit });
|
||||||
|
}
|
||||||
|
|
||||||
|
async chainOpenBox(address, boxId) {
|
||||||
|
let web3 = this.web3;
|
||||||
|
let boxIdBN = web3.utils.toBigInt('0x'+boxId)
|
||||||
|
const instance = this.initInstance(web3, process.env.VUE_APP_CONTRACT, treasureAbi, address);
|
||||||
|
let gasPrice = await web3.eth.getGasPrice()
|
||||||
|
gasPrice = gasPrice * 2n
|
||||||
|
let gasLimit = await instance.methods.openBox(boxIdBN).estimateGas({ from: address });
|
||||||
|
return instance.methods.openBox(boxIdBN).send({ from: address, gasPrice, gasLimit });
|
||||||
|
}
|
||||||
|
|
||||||
|
async chainClaimTask(address, taskId) {
|
||||||
|
let web3 = this.web3;
|
||||||
|
const taskIdHex = taskId.split("")
|
||||||
|
.map(c => c.charCodeAt(0).toString(16).padStart(2, "0"))
|
||||||
|
.join("");
|
||||||
|
let taskIdBN = web3.utils.toBigInt('0x'+taskIdHex)
|
||||||
|
const instance = this.initInstance(web3, process.env.VUE_APP_CONTRACT, treasureAbi, address);
|
||||||
|
let gasPrice = await web3.eth.getGasPrice()
|
||||||
|
gasPrice = gasPrice * 2n
|
||||||
|
let gasLimit = await instance.methods.claimTaskReward(taskIdBN).estimateGas({ from: address });
|
||||||
|
return instance.methods.claimTaskReward(taskIdBN).send({ from: address, gasPrice, gasLimit });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user