?接UniApp 以太坊bite钱包生成助记词并创建账户(一),继续更二 bite钱包定义合约查余额及交易的代码及一些方法。此文仅写思路和一些简略的代码及介绍,作为个人开发或迭代钱包项目的参考
????????定义合约:
var abi = [{
....
}];
//address -(一)内创建账户后生成的地址
var myContract = new web3.eth.Contract(abi, address);
/*new web3.eth.Contract(jsonInterface[, address][, options])
*参数:
*jsonInterface - Object: 要实例化的合约的json接口
*address - String: 可选,要调用的合约的地址,也可以在之后使用 myContract.options.address = *'0x1234..' 来指定该地址
*options - Object : 可选,合约的配置对象,其中某些字段用作调用和交易的回调:
*from - String: 交易发送方地址
*gasPrice - String: 用于交易的gas价格,单位:wei
*gas - Number: 交易可用的最大gas量,即gas limit
*data - String: 合约的字节码,部署合约时需要
*/
查询余额:
// 查询以太币余额
web3.eth.getBalance(address).then(console.log);
// 查看某个账号的代币余额
myContract.methods.balanceOf(contractAddress).call({from: currentAccount}, function(error, result){
if(!error) {
console.log(result);
//展示余额 以wei为单位的值转换为其他单位的数值 默认值为ether
this.bals = web3.utils.fromWei(result)
} else {
console.log(error);
}
});
发送Token,并进行ABI编码,可用于发送交易、调用方法或向另一个合约方法传递参数
var sendNum = 0;
var ContractData = myContract.methods.transfer(address, sendNum).encodeABI()
使用指定的私钥创建一个账户对象
let account = web3.eth.accounts.privateKeyToAccount('0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709');
指定地址发出的交易数量
web3.eth.getTransactionCount("0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe")
.then(console.log);
> 1
/**
*web3.eth.getTransactionCount(address [, defaultBlock] [, callback])
*参数:
*address:String - 要查询的账户地址
*defaultBlock:Number|String - 可选,设置该参数来覆盖web3.eth.defaultBlock属性值
*callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果
**/
//对交易进行签名,用来签名的账户地址需要首先解锁 解析值为RLP编码的交易对象。该对象的raw属性可以用来通过web3.eth.sendSignedTransaction() 方法来发送交易
示例代码:
var txData = {
//from:contractAddress,
to: contractAddress,
value: web3.utils.toWei('0','ether'),//合约交易(csdn不能打转z ),此值需设为0
gas: this.chainGas,
gasPrice: this.gasPrice,
nonce: nonce,
chainId: this.chainID,
data: ContractData,
//前面设置好的var ContractData=myContract.methods.transfer(address, 10000).encodeABI(),
}
web3.eth.signTransaction(txData).then(result=>{
//发送已经签名的交易
web3.eth.sendSignedTransaction(result.rawTransaction).then(function(result1_send){
//...一些操作 比如请求链接..
console.log('ok');
});
});
交易数据对象可以包含如下字段:
from- String|Number:发送帐户的地址。如果未指定,则使用web3.eth.defaultAccount属性。或web3.eth.accounts.wallet中本地钱包的地址。 to- String:(可选)消息的目标地址,若未定义则为合同发送消息。 value- Number|String|BN|BigNumber:(可选)为wei中的交易转移的数量,如果是合约发送消息,则是捐赠给合约地址。 gas - Number:(可选,默认:待定)用于交易的gas(未使用的gas会退还)。 gasPrice- Number|String|BN|BigNumber:(可选)此交易的gas价格,以wei为单位,默认为web3.eth.gasPrice。 data- String:(可选)包含合同上函数调用数据的ABI字节字符串。 nonce- Number:(可选)随机数的整数。 callback-Function:(可选)可选回调,将错误对象作为第一个参数返回,结果作为第二个参数返回。 返回参数 PromiEvent:promise组合的事件,将在交易完成时调用 "transactionHash"返回String:在发送事务并且事务哈希可用之后立即触发。 "receipt"返回Object:在交易确认时触发。 "confirmation"返回Number,Object:每次确认都会被调用,直到第12次确认。接收确认编号作为第一个参数,将数据作为第二个参数。 "error"返回Error:如果在发送过程中发生错误,则会触发。
|