Solidity
文章平均质量分 55
JohnnyMartin
这个作者很懒,什么都没留下…
展开
-
Win10下开发部署Dapp(4):solidity快速入门(基础篇)
基础篇Solidity是一门静态类型的脚本语言,我们可以对照C++的语法进行快速记忆。1.基本保留字与基本类型 contract:类似于class,定义一个合约,具有构造函数,仅在创建合约时被调用。 function:定义一个函数。 event:定义一个事件,外部Dapp可以监控这些事件,以获知合约内的变化。 var:声明变量,类似于C++11的auto,可以...原创 2018-03-17 18:34:28 · 965 阅读 · 0 评论 -
solidity快速入门(扩展篇)
扩展篇1.继承、多态、super 与 C3 线性化solidity支持继承,并且支持多重继承。下面的代码展示了基本的继承的作用:代码重用。contract ERC20Token{ string public name; string public symbol; uint256 public decimals; uint256 public totalSupply...原创 2019-09-22 19:35:19 · 632 阅读 · 0 评论 -
大型合约系统的一个构建思路与实践——升级版
固定的入口合约(不可升级)固定的事件合约(不可升级)固定的Data合约(不可升级)通过Owner关系、白名单等机制控制业务逻辑合约对以上三个合约的读写权限业务逻辑合约地址注册到Data,业务逻辑合约地址之间的依赖通过Data中转、解耦专用的GenInfo合约,通过数组一次返回多个前端需要的数据,减少请求次数、加快页面响应全局的暂停/重启开关,升级时使用升级后旧合约应该disable...原创 2019-09-11 15:49:11 · 298 阅读 · 0 评论 -
使用truffle测试solidity中的重载函数
ERC223标准定义了三个重载的transfer函数。这给truffle测试带来了不少麻烦——直接在测试框架中调用transfer函数会报错:参数错误之类的信息。本文使用web3的sendTransaction方法实现重载函数的调用。安装web3-eth-abi这个包。引用这个包 const Web3Abi = require(‘web3-eth-abi’);准备好要调用的方法的ab...原创 2019-04-15 15:00:07 · 377 阅读 · 0 评论 -
智能合约开发与调试要点整理——基于truffle框架
使用Truffle进行Solidity开发部署原创 2019-04-09 11:33:11 · 754 阅读 · 0 评论 -
君士坦丁堡升级要点详解
明天即将迎来以太坊的升级——君士坦丁堡升级,这里记录一下升级内容(要点)1,“君士坦丁堡”是什么?君士坦丁堡是以太坊四个发展阶段中的第三阶段中的第二个子阶段。以太坊四个阶段非别是:Frontier(前沿),Homestead(家园),Metropolis(大都会),Serenity(宁静)。其中第三阶段会引入许多重要特性,于是就将第三阶段分成两步走——拜占庭子阶段跟君士坦丁堡子阶段。在君士...原创 2019-01-16 10:16:36 · 492 阅读 · 0 评论 -
Bancor协议源码分析
1.编译源码、运行测试脚本pull Bancor源码到当前目录。在当前目录执行npm install 安装依赖的包进入scripts目录,修改三个js文件中前面几行代码中的相对路径,如“./solidity”改为“…/solidity”。否则会提示“Error: spawn node ENOENT”错误。在scripts目录执行node rebuild-all.js,编译源代码在sc...原创 2018-12-10 20:11:29 · 414 阅读 · 0 评论 -
以太坊合约中数据的底层存储
C/C++程序员在进行Solidity开发的时候往往会想:Solidity中的结构体是怎么存储的呢?会不会进行数据对齐呢?怎样定义结构体会使访问效率改一些呢?我们来探索下以太坊合约的数据在底层的存取机制。参考文章:这个,以及它的翻译巨大的数组合约中的所有的数据都存在这个巨大的数组中,以下简称为“大数组”数组长度为2^256 - 1数组每个元素32Byte。数组是稀疏的——不会一下子...原创 2018-11-26 18:10:50 · 2141 阅读 · 3 评论 -
大型合约系统的一个构建思路与实践
以太坊环境下智能合约开发,最重要的特点便是安全:像余额这类的信息,是直接关系到钱的。第二个特点便是:不太适合做大型的、高复杂度合约系统。 原因有以下几个: 1.调试困难。虽然有truffle这种利器,让发布合约、测试合约能够用js脚本自动运行,但是出错了排查问题依然是一件非常麻烦的事情,尤其是当合约变多、合约间的调用变多,调试、排错难度急剧增长。 2. 代码越多隐藏的bug越多。尤...原创 2018-11-09 18:42:32 · 317 阅读 · 0 评论 -
以太坊合约漏洞大集锦——分析、模拟与重现
以太坊的智能合约,自 DAO以来,漏洞就没断过,觉得有必要做一下汇总,以为鉴。1,The DAO 漏洞。该漏洞直接导致了以太坊的分叉。应该算是最有名的明星漏洞了。我们将源码的无关部分剔除,只剩关键代码。看模拟源码:pragma solidity ^0.4.18;contract TheDAO{ function splitDAO()public{ withdraw...原创 2018-11-06 17:43:21 · 3194 阅读 · 0 评论 -
solidity测试脚本:小心js里坑爹的数值计算
前天在调试solidity代码时,发现一个极为诡异的行为:solidity中存数的数值,当使用web3取出的时候,数值是错的——与solidity中的值对不上!solidity中的代码大概是这样的:mapping (uint => uint) public data;...data[0] = 9901538745632159654;data[data[0]] = 590153874...原创 2018-10-12 11:03:50 · 458 阅读 · 0 评论 -
使用solidity-flattener展开合约到一个文件中
平常使用truffle做合约的开发,可以通过import将别的合约包含进来,方便代码的组织。但是,有几个特殊场景,需要将import的合约都写到当前文件里: 使用钱包(如Mist)发布合约,不支持import,只能将所有sol的源代码放到一起,扔进Mist编译、发布。 将合约代码提交到区块浏览器,供别人参阅,需要将所有sol的源代码放到一起。 import的合约数量少,...原创 2018-08-16 18:10:53 · 1275 阅读 · 0 评论 -
truffle与nodejs的版本问题
今年三月份开始使用WSL + truffle,那时候truffle刚到4.1.8版本(node 8.8.0),就一直用这个版本,没想到用到的却是一个最稳定的版本。 后来,由于4.1.8最高只支持solc的0.4.23,便将truffle升级到最新的4.1.14(node 也升级到10.5.0),噩梦便开始了:各种意想不到的坑,例如: fs.writeFileSync 跟 fs.ex...原创 2018-08-16 17:49:41 · 2781 阅读 · 3 评论 -
win10下开发部署Dapp(7):接口化、自动化、可众筹、可升级的token
上一篇我们发行了一种token,将全部的token发放到了creator的账户里,这样的token交易起来非常不便:我想买N个MTC token,需要给creator转一定量的ether,或者用支付宝转一定的RMB给他,他再往我的账户地址上转N个token——流通效率非常低。这其中还有不可避免地信任问题:我转了RMB给他,他却没有给我token,或者少给了token。 有两种思路可以解决以上问题...原创 2018-08-23 16:20:41 · 375 阅读 · 0 评论 -
solidity多重继承与C3线性化
啊原创 2019-09-28 23:34:13 · 460 阅读 · 0 评论