DAPP合约代币燃烧分红系统开发解析
Dapp的项目看起来很简单,但是其中会遇见很多的问题,不如你前端的webjs应用的版本不对【181公链系统2591合约開发3365微电】没有包含我们需要的方法,还有就是软件安装的问题会出现很多,你可能熟悉一个钱包的插件就要一天,然后熟悉Remix又需要一天的时间,所以当你遇到困难的时候慢慢学,当然学习的路上少不了学长的帮助。努力奋斗总是有结果的。
Remix函数部署输入的构造函数的参数必须是我上面的十六进制数,不然那就会出错,但是你web应用的时候又是可以将Alice直接输入进去。这个问题是Remix把它集成化了,我在Ubantu系统上手动部署的时候是没有问题的,直接输入Alice也可以直接部署,但是Remix就是不可以这样子部署。
function abiEncode() public constant returns (bytes) {
abi.encode(1); // 计算 1 的ABI编码
return abi.encodeWithSignature("set(uint256)", 1); //计算函数set(uint256) 及参数1 的ABI 编码
}
send() 执行有一些风险:如果调用栈的深度超过1024或gas耗光,交易都会失败。因此,为了保证安全,必须检查send的返回值,如果交易失败,会回退以太币。如果用transfer会更好。
合约相关
this(当前合约的类型):
表示当前合约,可以显式的转换为Address
selfdestruct(address recipient):
销毁当前合约,并把它所有资金发送到给定的地址。
suicide(address recipient):
selfdestruct的别名
另外,当前合约里的所有函数均可支持调用,包括当前函数本身。
//部署的合约地址
contractInstance = VotingContract.at('0x5B15C032F8C8787815a73A2800560772196437Aa');
candidates = {"Alice": "candidate-1","Bob": "candidate-2","Cary":"candidate-3"}
function voteForCandidate() {
//console.log(candidate);
candidateName = $("#candidate").val();
//console.log(candidateName);
contractInstance.voteForCandidate(candidateName, {from: web3.eth.accounts[0]}, function() {
let div_id = candidates[candidateName];
console.log(contractInstance.totalVotesFor.call(candidateName).toString());
$("#" + div_id).html(contractInstance.totalVotesFor.call(candidateName).toString());
});
console.log(contractInstance.totalVotesFor.call(candidateName).toString());
}
Remix函数部署输入的构造函数的参数必须是我上面的十六进制数,不然那就会出错,但是你web应用的时候又是可以将Alice直接输入进去。这个问题是Remix把它集成化了,我在Ubantu系统上手动部署的时候是没有问题的,直接输入Alice也可以直接部署,但是Remix就是不可以这样子部署。
function abiEncode() public constant returns (bytes) {
abi.encode(1); // 计算 1 的ABI编码
return abi.encodeWithSignature("set(uint256)", 1); //计算函数set(uint256) 及参数1 的ABI 编码
}
send() 执行有一些风险:如果调用栈的深度超过1024或gas耗光,交易都会失败。因此,为了保证安全,必须检查send的返回值,如果交易失败,会回退以太币。如果用transfer会更好。
合约相关
this(当前合约的类型):
表示当前合约,可以显式的转换为Address
selfdestruct(address recipient):
销毁当前合约,并把它所有资金发送到给定的地址。
suicide(address recipient):
selfdestruct的别名
另外,当前合约里的所有函数均可支持调用,包括当前函数本身。
//部署的合约地址
contractInstance = VotingContract.at('0x5B15C032F8C8787815a73A2800560772196437Aa');
candidates = {"Alice": "candidate-1","Bob": "candidate-2","Cary":"candidate-3"}
function voteForCandidate() {
//console.log(candidate);
candidateName = $("#candidate").val();
//console.log(candidateName);
contractInstance.voteForCandidate(candidateName, {from: web3.eth.accounts[0]}, function() {
let div_id = candidates[candidateName];
console.log(contractInstance.totalVotesFor.call(candidateName).toString());
$("#" + div_id).html(contractInstance.totalVotesFor.call(candidateName).toString());
});
console.log(contractInstance.totalVotesFor.call(candidateName).toString());
}