以太坊solidity
weixin_43343144
这个作者很懒,什么都没留下…
展开
-
solidity之合约状态变量public修饰的状态变量,编译器自动为所有 public 状态变量创建 getter 函数。
原创 2019-03-10 20:47:45 · 613 阅读 · 0 评论 -
【solidity之浮点数计算方法总结】solidity之变量运算小数点会截断,而字面常量运算小数点不会截断
由于solidity无法保存小数,并且变量计算中小数点会直接截断【并非四舍五入】,所以在solidity由于中计算小数很头痛!而关于金钱的问题,精度是非常重要的,为了解决这个问题,目前个人觉得:最好的办法就是同时放大分子分母变成整数运算,仅最好一次运算变成小数小数计算案例:【小数计算,为了确保精度,我们最好先乘法在除法】value = 1a = 210b= 1c= 0.01(so...原创 2019-03-04 20:00:31 · 5733 阅读 · 1 评论 -
论truffle-contract框架与Web3.js(1.0版本)之间相互较量错误处理的终极方案(基于vue、nodejs、ES6、和原生js-es5)
说真的,当你真的弄明白了web3和solidity的原理,会发现其实基于ETH的区块链开发并没有我们想的那么难!但是对于一个初学者来说,完全靠自学又没有人教的情况下,真的很难。难的不是学不会,而是遇到各种bug的时候,如何去修复最难了!有时候一个坑要测试几天才能明白,而最怕的是遇到的某些坑你无法解决又不知道问谁,好无助!今天在这里和大家分享我最终对应web3.js 以及基于truffle框架提...原创 2019-03-14 12:59:06 · 667 阅读 · 0 评论 -
论truffle-contract框架与Web3.js(1.0版本)之间的较量(由于ES6、nodejs和原生js的版本问题,太多坑了,足足搞了我三天才解决根本bug)
论truffle-contract框架与Web3.js(1.0版本)之间的较量总结了一下,出现了如下三大错误!这个三大错误问题的根本就是一个【truffle-contract库和Web3.js同时导入(注:原生js文件导入不影响)】同时导入,通过nodejs(require语句)或ES6(import)语句导入,会冲突打架,其实在truffle-contract框架已经使用require语句导入了...原创 2019-03-12 22:32:43 · 737 阅读 · 0 评论 -
solidity之Fallback回退函数与call的用法总结
被调合约(通过call回调)支持接收以太币的案例:被调合约(通过call回调)支持接收以太币的案例:pragma solidity >=0.4.0 <0.6.0;contract Test001 { // 这个合约会保留所有发送给它的以太币,没有办法返还。 // 必须实现Fallback回退函数,才能支持call回调转账! // Fall...原创 2019-03-06 23:36:10 · 1859 阅读 · 0 评论 -
solidity之第三方库汇总大全
solidity之常用库网址:https://github.com/pipermerriam/ethereum-datetimehttps://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.solhttps://github.com/Arachnid/solidity-stringutilshtt...原创 2019-03-06 23:31:18 · 1671 阅读 · 0 评论 -
函数修改器Modifiers用法总结(为函数增加一个判断条件,条件为True才会执行)
solidity的函数修改器类似于Python的装饰器// 不带参数的函数修改器用法pragma solidity ^0.5.1;import { Hello } from "./test.sol" ;contract Test001 is Hello { uint value = 2; function get_value() public view ...原创 2019-03-04 11:54:04 · 1649 阅读 · 0 评论 -
solidity之import用法总结(类似于ES6)
# test.sol文件pragma solidity ^0.5.1;contract Hello { uint value; function hello() public view returns(string memory){ return "hello word"; } function set(uint ...原创 2019-03-04 11:33:05 · 4048 阅读 · 1 评论 -
solidity之library 用法(二)库的核心用法总结(一个特殊的contract合约)
solidity之library的一个核心原则就是:哪个合约调用library,那么library中的this就指向那个合约!pragma solidity >=0.4.0 <0.6.0;library Test_lib { // 这里的参数存储位置必须和contract合约调用传参位置一致! // 官方文档强调:library的内存类型都是通过引用来传递的...原创 2019-03-06 19:41:03 · 2115 阅读 · 0 评论 -
solidity以太坊之ERC20中的approve和transferFrom真正的含义是什么(委托转账)
委托交易在区块链中用的可能很少,在生活中很多,但是ERC20实现起来似乎感觉很难理解!这里深度剖析一下委托交易是怎么个原理! 委托转账原理分析: 假设:A账号有10000个token代币,B账号没有token代币,C账号也没有token代币! 那么:A账号 委托 B账号 转给C账号 100个token代币 怎么来实现呢? 首先:A账号 和 B账号建立一种委托关...原创 2019-04-04 11:28:50 · 17145 阅读 · 6 评论 -
【合约外部调用】solidity语言是一个合约调用另外一个合约【同一个区块链网络】的方法【使用接口声明关系】
solidity官方时间库:https://github.com/pipermerriam/ethereum-datetime一个如何调用主网智能合约的方法案例!(此案例用Rinkeby测试网络部署)这里接口的作用:只是用来声明需要调用的方法!一个如何调用主网智能合约的方法案例!pragma solidity >=0.5.0 <0.7.0;interfac...原创 2019-04-01 16:52:22 · 4793 阅读 · 0 评论 -
solidity之msg.sender总结(一个实时变化的变量)
务必注意:msg.sender是一个实时变化的变量!在合约中,方法的调用者不一样,msg.sender就会不一样!pragma solidity >=0.5.0 <0.7.0;import "../../node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol";contract TestTok...原创 2019-04-02 09:52:43 · 9742 阅读 · 0 评论 -
solidity以太坊调试之常见错误:VM Exception while processing transaction: out of gas 【gas耗尽的死循环】
问题原因:无限死循环,耗掉所以的gas失败告终!在以太坊区块链中,不能将交易设置为永久运行。交易可以运行直到达到gas限制。一旦发生这种情况,交易将出错,并且将返回“out of gas”错误。由于gas的价格在以太网中,这可能会对现实世界产生影响。所以修复一个“out of gas”的错误至关重要.错误介绍1. 用编辑器打开contracts/目录下的Store.sol文件....原创 2019-04-09 23:05:56 · 4362 阅读 · 0 评论 -
Metamask如何关闭隐私模式,可以正常读取账号信息
原创 2019-04-09 18:47:31 · 2204 阅读 · 1 评论 -
【重磅】Metamask调试错误:Uncaught (in promise) Error: Given address "null" is not a valid Ethereum address.
非常重要:如果使用Metamask运行以太坊区块链(web3.js)程序,一定不能开启【隐私模式】,否则会报如下错误:web3-utils.umd.js?f5e0:452 Uncaught (in promise) Error: Given address "null" is not a valid Ethereum address. at Object.toChecksumAddre...原创 2019-04-09 18:46:03 · 2354 阅读 · 0 评论 -
solidity之合约内部创建和外部创建的区别!
如何外部创建调用并合约参考:https://blog.csdn.net/weixin_43343144/article/details/88951698合约内部创建【在合约内部使用new关键词创建对象】// 内部创建token合约对象,那么token合约实例的发送者就是Collection合约contract Collection { // token是public,外部...原创 2019-04-03 10:11:57 · 1218 阅读 · 0 评论 -
【以太坊开发重磅推荐】基于ethers.js库同时兼容实现MetaMask钱包和独立的HDWallet钱包代码总结(真比web3.js强大不知道多少倍)
ethers.js官方推荐的MetaMask操作:https://docs.ethers.io/ethers.js/html/cookbook-providers.html?highlight=metamask#metamaskProviders.js(最终要选择MetaMask还是ethers选择的提供者)//Providers.js(最终要选择MetaMask还是ethers...原创 2019-04-11 23:09:03 · 3487 阅读 · 1 评论 -
eth 常用网络ID【networkid 】1,3 ,4 ,42
以太坊常用net work id,一般配合MetaMask 使用的id 有ID name 1 main network 3 Ropsten 4 Rinkeby 42 Kovan 0: Olympic, Ethereum public pre-release testnet1: Frontier, Homestead, Metropolis, ...原创 2019-04-11 22:01:28 · 7427 阅读 · 0 评论 -
Metamask之Rinkeby测试网络如何免费获得测试ETH的操作流程
参考链接:https://www.jianshu.com/p/534b2e2e01d4原创 2019-04-02 16:32:29 · 3486 阅读 · 0 评论 -
truffle框架之debug断掉提示总结(有一个很大的坑!)及常用调试命令
如果要使用truffle来debug断点调试,就必须使用命令来编译部署合约【注:不能直接在remix编译器上部署,否则你无法定位到你想要的hash调试上】truffle compiletruffle migrate【但是:使用truffle migrate部署完毕之后,可以在remix编译器上通过合约地址直接调用方法测试是OK的】debug常用命令总结Commands...原创 2019-04-02 12:17:32 · 529 阅读 · 0 评论 -
solidity之合约,接口、抽象合约、继承,构造函数的用法(和python很相似,但又有些区别)
最大的区别之一:是继承调用父类构造函数的方法原创 2019-03-06 18:58:10 · 488 阅读 · 0 评论 -
Vue+web3.js+solidity+truffle开发以太坊区块链合约部署全过程!(注意:这里没有使用truffle-contract库调用智能合约)
运行代码的时候有一个注意事项:就是在调用deploy()方法部署合约的时候,会弹出Metamask付款,可能出现2个问题:第一:你的gas不够,可以参考send方法的gas设置(我是设置默认,付款的时候,修改大点)http://cw.hubwiz.com/card/c/web3.js-1.0/1/4/6/第二个问题:错误提示:Error: the tx doesn't have th...原创 2019-03-13 21:25:13 · 3660 阅读 · 2 评论 -
solidity之storage和memory以及值传递与引用传递以及private、internal、public、external之间的关系总结大全
注意:这里的关系主要正对于contract合约类型,而对于library又不一样!关于storage和memory及private、public、internal、external直接的关系pragma solidity ^0.5.0;contract Test { // 全局状态变量默认默认都是storage(存于区块链中,永久存在) uint int...原创 2019-03-05 13:59:35 · 725 阅读 · 1 评论 -
solidity中的transfer、send、call(delegatecall)的区别和用法总结
务必注意:solidity0.5.0以上的版本发生了很大的变化,具体的规则以官方最新版为准!!!transfer、send、call都是可以合约之间相互转账的方法,但是用法有很大的不同!//如果异常会转账失败,抛出异常(等价于requi(send()))(合约地址转账)// 有gas限制,最大2300<addresspayable>.transfer(uint25...原创 2019-03-05 11:30:37 · 10568 阅读 · 2 评论 -
solidity 之transfer使用常见错误:Member "transfer" not found or not visible after argument-depende
pragma solidity ^0.5.0;contract Test { constructor() public payable{ } function test() public view returns (uint){ return address(this).balance; } //这里务必注意, 一个地址要支持...原创 2019-03-04 22:41:22 · 3453 阅读 · 0 评论 -
nodejs/npm安装truffle-contract和web3 失败的根本原因(以太坊开发环境搭建!!!)
npm安装软件很方便,可是会发现在安装某些js框架的时候,总是提示一大推错误,网上查了很多别人的经验,总没有讲的很具体,今天在此和大家分享一下我的解决方案:如果你的nodejs安装正常的情况下,安装js框架不正常,很大一种可能就是你选择安装的版本可能不行! 默认情况下 npm install 是最新版本,最新版本有时候未必给力,所以我们在安装的时候可以装一个稍微低一点点的具体版本! ...原创 2019-01-03 00:55:57 · 3163 阅读 · 2 评论 -
【solidity语言】为什么在合约内部return this.属性或方法不行的原因?(理解外部调用和内部调用)
contract Person { int[] public array; string public ss; function PersonTest1() public view returns(string) { this.array; //public支持外部调用! ss += "hello"; //public...原创 2018-12-25 23:38:03 · 536 阅读 · 0 评论 -
【Solidity】internal、private、external、public区别(测试后整理)
public与private对于public和private,相信学过其他主流语言的人都能明白:public修饰的变量和函数,任何用户或者合约都能调用和访问。private修饰的变量和函数,只能在其所在的合约中调用和访问,即使是其子合约也没有权限访问。external和internal除 public 和 private 属性之外,Solidity 还使用了另外两个描述函数可见...转载 2018-12-25 23:21:38 · 942 阅读 · 0 评论 -
ETH发token的原理步骤!
原创 2018-12-25 10:35:26 · 2328 阅读 · 0 评论 -
nodejs之以太坊truffle-contract 和web3 环境搭建之实现web宠物源代码
package.json配置文件依赖包!"dependencies": { "bootstrap": "^4.2.1", "jquery": "^3.3.1", "popper.js": "^1.14.6", "truffle-contract": "^3.0.4", "原创 2019-01-03 22:17:58 · 651 阅读 · 0 评论 -
solidity中的数组(storage类型的数组和其他语言数组差不多,但是memory数组的出现差点搞蒙)
可以参考这个链接(讲的还不错):https://www.jianshu.com/p/8e3da36fe587总结几个注意事项吧:第一点:storage类型(存于区块链的,永久存在),memory(存于VEM内存中的,用完立即销毁)第二点:storage类型的数组:和其他语言的数组基本一致(支持属性length(可以获得长度,还可以修改length来增加长度,比如:length...原创 2019-03-05 16:52:21 · 852 阅读 · 0 评论 -
solidity中的映射类型maping等价于Python的字典(只是没有Python那么强大,原理一样)
solidity映射官方推荐第三方库(支持可迭代的映射):https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.sol把iterable_mapping.sol源代码复制到本地文件,正常使用即可!...原创 2019-03-05 21:13:46 · 221 阅读 · 0 评论 -
solidity声明变量会赋值默认值(不存在underfind或null的值),具体默认值如下
原创 2019-03-05 22:31:35 · 1836 阅读 · 0 评论 -
remixd的用法之于remix浏览器共享本地文件夹总结(一个忽略的坑)
这个是remixd官方用法,如果你直接输入命令:remixd -s D:/Kirinproject/solidity-truffle仅输入这个命令来共享本地文件,会出现错误:URL Remix IDE instance has to be provided错误:URL Remix IDE instance has to be provided的原因是必须指定一个remix-i...原创 2019-03-04 09:24:00 · 3356 阅读 · 1 评论 -
solidity之view和pure函数的用法总结
pragma solidity >=0.4.0 <0.6.0;contract User { // 状态变量 uint public user_age = 12; // view修饰的条件(只读取状态,但不修改状态) // 本地运行,不消耗gas function get_age() public view retu...原创 2019-03-06 17:57:19 · 5830 阅读 · 0 评论 -
解决Windows7安装Remix-ide或Remixd不成功的问题(务必安装下面几步来,否则肯定失败)
Remix-ide或Remixd编辑器工具都是基于C++的程序,所以必须安装C++的环境才可以安装成功!第一步:安装nodejs。需要用到npm和cnpm(淘宝镜像速度更快);第二步:安装vs(2005或2007或以上都可以),我安装的是vs2017,安装完毕vs2017后会提示你选择安装环境这里必须安装C++功能和Windows SDK,其他可选。(我个人是把C++、Windows...原创 2019-03-03 23:21:14 · 2893 阅读 · 0 评论 -
solidity之错误处理函数require和assert的对比与选择!
官方文档:https://solidity.readthedocs.io/en/v0.5.4/control-structures.html#error-handling-assert-require-revert-and-exceptions关于require及assert的用法官方文档叽里呱啦的说了很大,最终有一句话最有价值:请注意,assert式异常消耗了所有可用的调...原创 2019-03-06 16:27:59 · 780 阅读 · 0 评论 -
solidity之abi编码函数总结
pragma solidity >=0.4.0 <0.6.0;contract Test { function set(uint value) public { }}contract User { function test() public view returns(bytes memory){ /...原创 2019-03-06 14:34:47 · 6324 阅读 · 0 评论 -
solidity之library 用法(一),以及using A for B的特性(一个特殊的contract合约)
pragma solidity >=0.4.0 <0.6.0;// library和contract用法有一定的区别,内部使用更加灵活!library UserLib { struct _User { string name; uint age; mapping(uint=>string) use...原创 2019-03-06 11:49:14 · 3014 阅读 · 0 评论 -
solidity之delete的用法(和其他语言不一样,其他语言是释放空间,而solidity仅仅初始化默认值!)
原创 2019-03-06 10:26:54 · 145 阅读 · 0 评论