区块链开发零碎知识
文章平均质量分 57
黄嘉成
这个作者很懒,什么都没留下…
展开
-
【Solidity】Storage和memory关键字的区别和用法
在 Solidity 中,有两个地方可以存储变量 —— storage以及memory。Storage 变量是指永久存储在区块链中的变量。 Memory 变量则是临时的,当外部函数对某合约调用完成时,内存型变量即被移除。状态变量(在函数之外声明的变量)默认为“storage”形式,并永久写入区块链;而在函数内部声明的变量默认是“memory”型的,它们函数调用结束后消失。然而也有一些情...原创 2018-05-26 10:15:37 · 12464 阅读 · 2 评论 -
【Solidity】internal、private、external、public区别
public与private对于public和private,相信学过其他主流语言的人都能明白:public修饰的变量和函数,任何用户或者合约都能调用和访问。private修饰的变量和函数,只能在其所在的合约中调用和访问,即使是其子合约也没有权限访问。external和internal除 public 和 private 属性之外,Solidity 还使用了另外两个描述函...原创 2018-05-26 11:02:50 · 25035 阅读 · 3 评论 -
【Solidity】函数returns多个值的接收方式
函数返回多个值学习过javascript或其他编程语言的童鞋看到Solidity中的函数可以有多返回值肯会有些惊讶(如下图),不知道该怎么对多返回值的函数进行接收。其实方法很简单的。// 函数可以返回多个值function multipleReturns() returns(uint a, uint b, uint c) { return (1, 2, 3);}同时接收所有返...原创 2018-05-26 11:26:30 · 6832 阅读 · 0 评论 -
使用truffle-contract与以太坊主链合约通信
truffle-contract与web3.js一样,都是用来与以太坊智能合约交互的JS库,但是相对于web3.js来说,truffle-contract封装得更简单一些,本文示范如何通过truffle-contract与以太坊主链上部署好的合约通信。第一步引入相关的包和合约ABI文件,并通过contract(abi)函数得到合约对象,ABI文件可以通过truffle comile命令对sol...原创 2018-06-03 19:38:14 · 2429 阅读 · 0 评论 -
【Solidity】Gas estimation failed-Gas estimation errored with the following message
今天在写完合约在remix部署测试的时候遇到了这么一个问题,一旦向合约里写数据就出现如下错误: Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending? 如下图所示: 经过...原创 2018-05-31 17:17:14 · 11587 阅读 · 2 评论 -
Error: new BigNumber() not a base 16 number
在js中测试调用合约时发生了以下错误:StuDetailsApp.js:44 Error: new BigNumber() not a base 16 number: at T (inpage.js:1) at inpage.js:1 at new r (inpage.js:1) at i.formatOutputString [as _outputForma...原创 2018-08-05 18:35:12 · 3564 阅读 · 0 评论 -
js解析智能合约Solidity返回的struct
Solidity是以太坊智能合约的编程语言,我们可以通过web3.js来与合约进行通信,并接收Solidity函数的返回值。不少人在接收struct类型的返回值时不知道怎么处理,本文展示一种解析方法,以供各位学习交流,如有更好的方法,欢迎讨论。原创 2018-08-03 12:52:27 · 6203 阅读 · 5 评论 -
TypeError: web3.eth.Contract is not a constructor错误解决
这是web3.js开发者在创建合约对象时很容易发生的错误,其实就是不同版本web3.js带来的API变化问题。请检查你的web3.js版本:如果version<1.0.0,使用:web3.eth.contract(studentFactoryArtifact,address);// 注意区分contract大小写如果version>1.0.0,使用:ne...原创 2018-08-22 09:59:16 · 7022 阅读 · 3 评论