分类: 区块链

区块链相关开发

33 篇文章

一个简单的 ERC20 合约
概述 ERC20 标准接口。 样例 pragma solidity ^0.4.25; contract ERC20 { function totalSupply() public constant returns (uint supply); // 总供应量 function balanceOf( address who ) public cons…
Solidity 中 call,callcode,delegatecall 的区别
概述 Solidity 中用 call,callcode,delegatecall 这三个函数来进行跨合约的调用。给他们的三个的调用区别做个笔记。 call vs callcode call 和 callcode 的区别在于:代码执行的上下文环境不同。具体来说,call 修改的是被调用者的storage,而 callcode 修改的是调用者的sto…
以太坊C++系列(06)-以太坊出块流程
概述 描述一下基于 C++ 版本的以太坊代码,从交易到出块上链的整个流程做个备忘。以太坊公链采用的共识算法为Pow,联盟链采用的算法是PBFT。 交易 交易接收 交易的接收有两大类,一类是通过RPC接口eth_sendRawTransaction()与eth_sendTransaction()接收到的交易。eth_sendRawTransactio…
区块链相关基础知识点
Hash 算法特点 正向快速:给定明文和 Hash 算法,在有限时间和有限资源内能计算得到 Hash 值。 逆向困难:给定(若干) Hash 值,在有限时间内很难(基本不可能)逆推出明文。 输入敏感:原始输入信息发生任何改变,新产生的 Hash 值都应该出现很大不同。 冲突避免:很难找到两段内容不同的明文,使得它们的 Hash 值一致(发生碰撞)。…
节点准入机制
节点准入机制 由于使用CA流程需要特定的工具去生成证书以及颁发证书,流程比较复杂。前期打算用节点公私钥进行验证。假设此时已经搭建完第一个主节点A,此时B节点待加入。大概流程如下: 节点A的信息会写入创世区块。我们对第一个创建的主节点,不允许删除,不允许更新。 在链A上将A节点信息以及B节点信息写入系统合约。节点信息大概有节点IP,节点p2p通讯端口…
智能合约Solidity编程语言
Solidity语言 本文全部来自《智能合约Solidity编程语言》,我只是做了搬运工搬过来方便我自己查看而已。 Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。 Solidity与其它语言相关的特点? 它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又…
Juice联盟链搭建流程
Juice联盟链搭建流程备忘录 给Juice联盟链搭建流程做个备忘录,自己使用脚本自动化部署链要用到。 主链搭建流程 创建前链验证 主要是验证链的状态信息,比如已经搭建的好的不允许再搭建。 URL:/nodeMainValidate.do Request Data: {} Response:{"ret":0,"mess…
以太坊C++系列(05)-状态通道的简要实现
背景描述 以太坊为作为一个公有链,允许任何人发布智能合约,但使用以太坊网络的成本很高,无论是普通交易或是智能合约都需要一定费用。尤其对于大批量的小额交易来讲,由于这些交易是需要全网共识的,如果频繁的执行智能合约,不但会增加以太坊网络的负担,光交易手续费一项,就让人望而却步。 状态通道为此提供了一种新的思路,通过将部分流程移出到链外来提高区块链的效率…
以太坊C++系列(04)-给合约加个权限
背景描述 在以太坊中,只要你部署到链上的合约,任何人都是只要付出对应的gas就可以调用你的合约来执行你合约中的方法,为了防止别人调用你的合约,你一般在合约的方法中加上对合约的控制权限,假设智能合约中有一个转钱的伪代码如下: function transferFrom(address _from, address _to, uint256 _valu…
以太坊C++系列(03)-交易gasUsed错误统计问题
问题描述 这个问题是在一个客户那里获到的。一个块里面有多笔交易,其中一笔交易使用 eth.getTransactionByHash("0x4ae91a30dcc6433815fa794c65f9ba341031c7a94b8cfe33232efcc7b14b3cda") 查询之后获得的交易信息如下(为了描述问题,信息有删减): …