作者: lcq

71 篇文章

基础知识总结-常用字符串函数实现
strcpy 功  能: 将参数src字符串拷贝至参数dest所指的地址 用  法: char *strcpy(char *dest, const char *src) 返回值: 返回参数dest的字符串起始地址 说  明: 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代 …
基础知识总结-C++
const 作用 修饰变量,说明该变量不可以被改变; 修饰指针,分为指向常量的指针和指针常量; 常量引用,经常用于形参类型,即避免了拷贝,又避免了函数对值的修改; 修饰成员函数,说明该成员函数内不能修改成员变量。 助记法宝 1、关键看const 修饰谁。 2、由于没有 const * 的运算,若出现 const * 的形式,则const实际上是修饰…
以太坊C++系列(05)-状态通道的简要实现
背景描述 以太坊为作为一个公有链,允许任何人发布智能合约,但使用以太坊网络的成本很高,无论是普通交易或是智能合约都需要一定费用。尤其对于大批量的小额交易来讲,由于这些交易是需要全网共识的,如果频繁的执行智能合约,不但会增加以太坊网络的负担,光交易手续费一项,就让人望而却步。 状态通道为此提供了一种新的思路,通过将部分流程移出到链外来提高区块链的效率…
以太坊C++系列(04)-给合约加个权限
背景描述 在以太坊中,只要你部署到链上的合约,任何人都是只要付出对应的gas就可以调用你的合约来执行你合约中的方法,为了防止别人调用你的合约,你一般在合约的方法中加上对合约的控制权限,假设智能合约中有一个转钱的伪代码如下: function transferFrom(address _from, address _to, uint256 _valu…
基础知识总结-网络编程
计算机经网络体系结构: 各层作用及协议 分层 作用 协议 物理层 通过媒介传输比特,确定机械及电气规范(比特 Bit) RJ45、CLOCK、IEEE802.3(中继器,集线器) 数据链路层 将比特组装成帧和点到点的传递(帧 Frame) PPP、FR、HDLC、VLAN、MAC(网桥,交换机) 网络层 负责数据包从源到宿的传递和网际互连(包 Pa…
以太坊C++系列(03)-交易gasUsed错误统计问题
问题描述 这个问题是在一个客户那里获到的。一个块里面有多笔交易,其中一笔交易使用 eth.getTransactionByHash("0x4ae91a30dcc6433815fa794c65f9ba341031c7a94b8cfe33232efcc7b14b3cda") 查询之后获得的交易信息如下(为了描述问题,信息有删减): …
在浏览器上使用JavaScript代码与以太坊RPC通讯
背景描述 我为了自己开发方便,做了一个以太坊工具集,里面提供了RPC的调用,Web3.js调用合约等。但是单纯使用rpc调用,无法满足某些测试需求,比如我想在一个块里面包含3比交易,那么我需要连续发3笔交易,我不可能手动连续点三次eth_sendTransaction。于是我使用JavaScript的函数eval()实现了自己的需求。总体界面大概如…
以太坊C++系列(02)-p2p网络错误排查
问题描述 最近在做一个项目,需求是有大量的初始数据需要上链。为了加快将这些初始数据上链,我们在一个交易里面打包了大量的数据,我们先假设一个交易大小为1M。然后在交易队列里面不爆满的情况下,不断的发交易给后台。没过多长时间,我就会收到如下的警告错误信息: WARN >>[p2p] [Session.cpp:420:operator()] …
以太坊C++系列(01)-p2p模块整体运行流程
预览 所有涉及到的类大概如下图所示。当然,为了简化类图,只是将涉及到p2p运转关键流程类里面的变量与方法摘录了出来。注意:ConsensusHost与ConsensusHostPeer类的继承关系跟EthereumHost一致,所以不详细画出。 主要功能 节点获取与监听 我们自己由于加了一些ca证书验证过程,所以使用JuHost类继承了Host,实…
Git Flow
目前存在问题 每个项目分支众多,命名混乱,有的分支用于测试,有的用于代码合并,有的分支用于开发,有的分支已经被废弃,分支跟标签混淆,时间久了无法了解分支的具体用途。混乱疯狂的分支合并操作,多个分支互相合并,出现问题难以回滚。以cpp-ethereum项目为例,截止到2018/09/12为主,有如下42个分支(标签我就不列了)。 all-static…