
以太坊技术文章
文章平均质量分 87
汪晓明
这个作者很懒,什么都没留下…
展开
-
以太坊Go、Java、Python、Ruby、JS客户端介绍
Go Ethereum 简介go-ethereum客户端通常被称为geth,它是个命令行界面,执行在Go上实现的完整以太坊节点。通过安装和运行geth,可以参与到以太坊前台实时网络并进行以下操作: 挖掘真的以太币 在不同地址间转移资金 创建合约,发送交易 探索区块历史 及很多其他 Go Ethereum 链接:网站: http://ethe...原创 2018-07-09 13:14:45 · 324 阅读 · 0 评论 -
ETH-Pow算法分析
1. Ethash 算法1.1 EthashEthash是以太坊1.0中使用的PoW(工作量证明)算法,它是Hashimoto算法结合Dagger之后产生的一个变种。它的特点是计算的效率基本与CPU无关,却和内存大小和内存带宽正相关。因此通过共享内存的方式大规模部署的矿机芯片并不能在挖矿效率上有线性或者超线性的增长。该算法的一般流程如下:首先根据块信息计算一个种子(seed, c+...原创 2018-08-21 18:21:31 · 4375 阅读 · 0 评论 -
P2P网络数据交互
1. 发送交易数据SendTransactions事件触发交易广播txBroadcastLoop本地发送了一个交易,或者是接收到别人发来的交易信息。 txpool会产生一条消息,消息被传递到txCh通道。然后被goroutine txBroadcastLoop()处理, 发送给其他不知道这个交易的peer。ProtocolManager在Start的时候,订阅TxPreEvent并启动...原创 2018-08-28 17:03:08 · 4518 阅读 · 0 评论 -
P2P网络数据处理流程
P2P网络数据处理流程监听(ListenLoop)+拨号(Dial) –> 建立连接(SetupConn) –> Enc 握手(doEncHandshake) –> 协议握手(doProtoHandshake) –> 添加Peer Addpeer –> Run Peer1. Enc握手 doEncHandshake监听时接收到Enc握手:receive...原创 2018-08-23 14:42:58 · 611 阅读 · 0 评论 -
Solidity编译器和简单调试
1 安装Solidity编译器1.1 通过docker安装Solc搜索docker的Solc镜像docker search —no-trunc ethereum/solc通过docker安装Solcdocker pull docker.io/ethereum/solc:stable1.2 运行Solc容器运行如下命令docker run —rm -it —priv...原创 2018-08-20 15:24:24 · 1819 阅读 · 0 评论 -
Solidity概述及基本代码展示
Solidity是实施智能合约的契约导向的高级语言。它受到C ++,Python和JavaScript的影响,旨在针对以太坊虚拟机(EVM)。Solidity是静态类型的,支持继承,库和复杂的用户定义类型等功能。您将会看到,可以创建投票,众筹,盲目拍卖,多重签名钱包等等的合约。 1 Solidity智能合约例子我们从一个基础的solidity例子开始。开始的时候,你可能看不懂每...原创 2018-08-16 16:12:23 · 437 阅读 · 0 评论 -
以太坊Web3J插件功能探究
1 Java Web3J 概述Web3j是一个轻量级,Reactive(响应式),类型安全的Java库,用于与Ethereum网络上的客户端(节点)集成,这允许您使用Ethereum块链,而不需要为平台编写自己的集成代码的额外开销。1.1 Web3J 提供的功能 通过HTTP和IPC 完成Ethereum的JSON-RPC客户端API的实现 Ethereum钱包支持...原创 2018-08-12 22:13:08 · 1435 阅读 · 0 评论 -
Solidity开发神器Remix
1 功能这里我们使用在线编译器,打开网址https://ethereum.github.io/browser-solidity1.1 文件夹管理最左边是文件夹管理,里面列出了当前工作区里的文件,remix可以支持从本地文件夹读取文件。1.2 工作区正中间是工作区,工作区上半部是代码编辑区,在这里可以写solidity合约。下半部是日志区,在执行智能合约时,会显示tran...原创 2018-08-07 14:30:46 · 2676 阅读 · 4 评论 -
基于Ubuntu Docker环境下进行以太坊实践
本文是指导以太坊技术爱好者,通过基于Ubuntu环境下通过docker来进行以太坊的客户端安装和调试的指导教程。 目录1、实践环境要求2、Ubuntu版本说明3、Docker安装4、Ethereum安装与实践5、ZSH小工具推荐 1 实践环境要求1.1 概述https://docs.docker.com/engine/installation/linux...原创 2018-08-02 16:03:43 · 970 阅读 · 0 评论 -
Java Web3J概述
1 Java Web3J概述Web3j是一个轻量级,Reactive(响应式),类型安全的Java库,用于与Ethereum网络上的客户端(节点)集成,这允许您使用Ethereum块链,而不需要为平台编写自己的集成代码的额外开销。1.1 Web3J的提供的功能通过HTTP和IPC 完成Ethereum的JSON-RPC客户端API的实现1.Ethereum钱包支持2.使用过滤器...原创 2018-08-14 14:48:29 · 1863 阅读 · 1 评论 -
Solidity概述及基本代码展示
Solidity是实施智能合约的契约导向的高级语言。它受到C ++,Python和JavaScript的影响,旨在针对以太坊虚拟机(EVM)。Solidity是静态类型的,支持继承,库和复杂的用户定义类型等功能。您将会看到,可以创建投票,众筹,盲目拍卖,多重签名钱包等等的合约。 1 Solidity智能合约例子我们从一个基础的solidity例子开始。开始的时候,你可能看不懂每...原创 2018-08-09 16:27:01 · 625 阅读 · 0 评论 -
以太坊RLP机制分析
目录1 RLP 定义2 RLP 编码规则3 RLP 编码实例4 RLP 分析 1 RLP 定义RLP,即 Recursive Length Prefix, 递归长度前缀编码,是以太坊数据序列化的主要方法, 具有较好的数据处理效率,尤其是将长度和类型统一作为前缀,实际上 RLP 是基于 ASCII 编码的一种结构化扩充,既能表示长度还能表示类型,是一种非常紧凑的结构化编码...原创 2018-07-31 17:19:33 · 745 阅读 · 0 评论 -
Web3j实现智能合约
1 获取凭证Credentials是我们钱包的凭证,在我们交易和创建智能合约的时候都需要用到。1.1 创建新凭证file=WalletUtils.generateFullNewWalletFile(pwd,dir);返回的file不是全路径,而是该文件的路径名,比如UTC—2017-10-30T12-10-45.516005546Z—5f38056f45091ee992298e53...原创 2018-08-04 23:33:40 · 1121 阅读 · 0 评论 -
以太坊虚拟机的基本介绍
此文简要的介绍了以太坊虚拟机的基本要素,在以后的文章我们会向大家展示如何安装应用调试等基本技术。1.1 概述以太坊虚拟机(EVM)是以太网上智能合约的运行环境。这不仅仅是个沙盒,更确实的是一个完全独立的环境,也就是说代码运行在EVM里是没有网络,文件系统或是其他进程的。智能合约甚至被限制访问其他的智能合约1.2 账号 在以太坊中有两种账号共享地址空间:外部账号和合约账号。外部账号...原创 2018-07-29 11:11:34 · 2688 阅读 · 0 评论 -
RLPx加密握手协议研究
加密握手协议全局位置Server服务器作为上层使用的接口,直接调用Start启动。Start完成启动监听端口、连接以及建立通信的任务。在运行中,Star通过创建多个goroutine,并将goroutine的结果通过channel形式汇聚给run进行集中处理。当用户间建立节点以后,通过Msg格式进行通信。其中newTransport 是和节点建立连接(tcp或者udp)后进行协商密钥、协议...原创 2018-09-06 17:48:22 · 449 阅读 · 0 评论