什么是以太坊(Ethereum) 以太坊(Ethereum)是一个基于区块链技术,允许任何人构建和使用去中心化应用的区块链平台.像比特币一样,以太坊是开源的,并由来自全世界的支持者们共同维护.与比特币仅提供了有限功能的脚本不同,以太坊提供了一个“图灵完备”的虚拟机,称为以太坊虚拟机(Ethereum Virtual Machine),简称EVM,用户可以在EVM上创建智能合约(Smart Contract).以太坊平台中的通用货币为以太币(Ether),简称ETH,以太币可用于账号间的转账交易或…
前言 在上一章介绍了关于区块链的一些基础知识,这一章会分析指令 geth --datadir dev/data/02 init private-geth/genesis.json 的源码,若你的ethereum的debug环境还没有搭建,那么需要先搭建ethereum的dabug环境. 准备工作 创建文件 genesis.json ,内容如下: { "config": { "chainId": 666, //可用于网络标识,在eip155里有用到,目前来看是做重放保…
Spark Streaming揭秘 Day33 Kafka内核再揭秘 优秀的框架会把引擎做到极致,Kafka就是这样,让我们再深入一下研究. 设计目标 kafka系统有着比较独特的的设计,包括5点: kafka第一设计原则是速度,不是个考虑功能的消息组件,主要考虑的是消息的传递速度,为了速度可以舍弃功能. 首要的考量是消息的吞吐量,而不是功能.使用3台pc Server,可以达到每秒百万条消息的吞吐量. kafka和其他消息系统不太一样,消息在磁盘上可以持久化,所以消息存储能力是无限的,从kaf…
前言 在上一章我们介绍了  ethereum初始化指令 ,包括了系统是如何调用指令和指令的执行.在本章节我们将会介绍 geth --datadir dev/data/ --networkid console 指令. 指令分析 指令: geth --datadir dev/data/ --networkid console 介绍:上面的指令主要的工作为: 运行eth程序 开启控制台 分析: --datadir :指定eth的数据存储地址为 dev/data/ --networkid :指定eth的…
在做一些测试工作的时候, 为了方便控制以及更快的进入真正的测试工作,可能需要搭建一个私有的以太坊网络. 而以太坊节点之间能够互相链接需要满足1)相同的协议版本2)相同的networkid,所以搭建私有网络最方便的方法就是通过geth命令中的--networkid选项,设置一个与主网不同的networkid(主网的networkid为1),这也是官方推荐的方法. 下面开始建立私有以太坊网络: mkdir private-geth cd private-geth 建立创世纪区块文件,是一个json格…
以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp256k1,需要cgo,另外一种是依赖github.com/btcsuite/btcd,这是一个使用go语言实现的比特币的客户端. sha3模块 这个模块实际上可以认为就是一个功能计算sha3-256,用法也很简单,就是调用crypto中的Keccak256,输出是一个32字节的hash结果 hash…
以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp256k1,需要cgo,另外一种是依赖github.com/btcsuite/btcd,这是一个使用go语言实现的比特币的客户端. sha3模块 这个模块实际上可以认为就是一个功能计算sha3-256,用法也很简单,就是调用crypto中的Keccak256,输出是一个32字节的hash结果 hash…
前言 上一章我们介绍了如何搭建ethereum的debug环境.为了更深入的了解ethereum,我们需要了解一些ethereum的相关的知识,本章我们将介绍这些知识. ethereum相关知识 在学习ethereum的过程中,我们可能会遇到下面的一些知识: hash merkle tree merkle patricia tree rlp Hash(散列函数) Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长…
以太坊(Ethereum)是一个运行智能合约的去中心化平台(Platform for Smart Contract),平台上的应用按程序设定运行,不存在停机.审查.欺诈.第三方人为干预的可能.以太坊平台由 Golang.C++.Python 等多种编程语言实现. 前段时间的The DAO事件让以太坊平台损失惨重,以太坊也分裂成ETC和ETH,平台的发展前景不明. 1.下载以太坊 官网地址 下载之后解压,运行 2.开始安装 2.1选择测试网络 前期选测试网络, 后期再讲主干网络 2.2输入密码 密…
以太坊(Ethereum ):下一代智能合约和去中心化应用平台 翻译|巨蟹 .少平 译者注|中文读者可以到以太坊爱好者社区(www.ethfans.org)获取最新的以太坊信息. 当中本聪在2009年1月启动比特币区块链时,他同时向世界引入了两种未经测试的革命性的新概念.第一种就是比特币(bitcoin),一种去中心化的点对点的网上货币,在没有任何资产担保.内在价值或者中心发行者的情况下维持着价值.到目前为止,比特币已经吸引了大量的公众注意力,就政治方面而言它是一种没有中央银行的货币并且有着剧烈…
P75 .1-以太坊私网建立 .合约编译.部署完全教程(1) 使用此博文进行安装配置:https://blog.csdn.net/w88193363/article/details/79402074 一.搭建私有链所需的依赖环境 操作系统:ubuntu16.04,开虚拟机的话要至少2G,否则会影响测试挖矿时的速度 软件:geth客户端 版本:1.8.1-stable-1e67410e 二.安装geth客户端 [Ctrl+Alt+T]打开终端,依次输入以下命令: sudo apt-get upda…
智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethereum) – 智能合约开发概述 支持智能合约的区块链 虽然以太坊(Ethereum)是最流行支持智能合约的区块链平台,但它并不是唯一支持智能合约的平台. 超级账本(Hyperledger) 是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目.通过创建分布式账本的公开标准,实…
作用: 外部账号 – 用户使用的账号,账户余额. 合约账号 – 智能合约使用的账号,每个智能合约都有一个账号,内存和账户余额 以太坊(Ethereum)网络中,有2种账号: 外部账号 – 用户使用的账号 合约账号 – 智能合约使用的账号,每个智能合约都有一个账号 这些账号,都被称为状态对象/state object,构成了以太坊网络的状态.外部账号的状态是账户余额,合约账号的状态是内存与账户余额. 外部账号是用户账号,例如,普通用户.矿工等使用的账号. 合约账号是区块链网络中,位于特定地址(账号…
以太币的主要单位是以太/Ether,即一个以太币,以太币的最小单位是wei. 以太币最小单位 wei 是以虚拟币先驱人物:戴伟 Wei Dai 命名,戴伟 W Dai 是一位兴趣广泛的密码学专家,他在 1998 年发明了 B-money 匿名的.分布式的电子加密货币系统,强调点对点的交易和不可更改的交易记录.中本聪发明比特币的时候,借鉴了很多戴伟的设计,并和戴伟有很多邮件交流. 以太币的单位如下: 单位 Wei 值 Wei wei 1 wei 1 Kwei 1e3 wei 1,000 Mwei…
作用:提供优于传统合约的安全方法,并减少与合约相关的其他交易成本. 以太坊网络基石:以太坊虚拟币和智能合约. 智能合约(Smart contract )是一种旨在以信息化方式传播.验证或执行合同的计算机协议.智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转.智能合约概念于1995年由Nick Szabo首次提出. 智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本. 简单地说,智能合约可以理解为一个自执行的协议.智能合约可以自动处理协议的履行.管理.…
1.下载Geth.exe 运行文件,并安装 https://github.com/ethereum/go-ethereum/releases/ 下载后,只有一个Geth.exe的文件 2.cmd进入按章目录运行:geth -help看看是否可用geth命令 3.在Geth安装目录下放置初始化创世块文件genesis.json {     "nonce":"0x0000000000000042",     "mixhash":"0x000…
1.安装curl.git apt-get update apt-get install git apt-get install curl 2.安装go curl -O https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz Unpack it to the /usr/local (might require sudo) tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz 3.…
目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太坊应用诞生.以太坊是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用. 以太坊可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产. 以太坊的白皮书:https://github…
1.搭建私链所需环境 操作系统:ubuntu16.04,开虚拟机的话要至少4G,否则会影响测试挖矿时的速度 软件: geth客户端 Mist和Ethereum Wallet:https://github.com/ethereum/mist/releases/ 2.安装geth客户端 sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum/…
区块链开发(一)搭建基于以太坊go-ethereum的私有链环境 wo541075754 · 2016-11-07 13:00:03 · 3730 次点击 · 预计阅读时间 3 分钟 · 约1小时前 开始浏览 这是一个创建于 2016-11-07 13:00:03 的文章,其中的信息可能已经有所发展或是发生改变. 通过各方资料了解学习之后,决定自己开始搭建基于以太坊go-ethereum的私有链环境.由于本人的电脑系统为win8,为避免window环境出现过多莫名其妙的问题,特意通过vm搭建了一…
使用 Go-Ethereum 1.7.2搭建以太坊私有链 目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太坊应用诞生.以太坊是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用. 以太坊可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成…
一.前言 最近,需要接触区块链项目的主链开发,在EOS.BTC.ethereum.超级账本这几种区块链技术当中,相互对比后,最终还是以go-ethereum为解决方案. 以ethereum为基准去找解决方案,最终找到了2个符合自己要求的方案,分别如下:美图.gttc.本来是想用gttc的这个解决方案的,但是它是基于go-ethereum最新源码来进行二次开发的,相对不稳定,因此还是用美图的解决方案了,毕竟这公司大一点,没那么多坑. 二.源码 为了方便测试,我们需要将节点最大验证器数修改一下,这样…
原文地址: 石匠的blog 为了测试以太坊智能合约,最方便的是在本地搭建一个以太坊私有链.在mac上搭建环境主要需要以下步骤. geth安装 geth是go-ethereum的简写,是一个用go语言编写的以太坊客户端,是在以太坊智能合约开发中最常用的命令行工具. 在mac上可以通过brew工具直接安装: brew tap ethereum/ethereum brew install ethereum 详细的安装说明也可以查看官方文档. 安装完成后,可以再mac的terminal中,用以下命令测试…
以太坊被称为区块链2.0,就是因为以太坊在应用层提供了虚拟机,使得开发者可以基于它自定义逻辑,通常被称为智能合约,合约中的公共接口可以作为区块链中的普通交易执行.本文就智能合约发代币流程作一完整介绍(当然智能合约不局限于发代币).内容如下: Solidity ERC20 合约编写与发布 合约源码上传 其它 Solidity Solidity是用于在以太坊编写智能合约的语言,目前最新版本0.5.11.这里对几个关键概念作一介绍. library library常用于提供可复用方法,可以随合约[作为…
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014409380/article/details/79897335 时隔多日,我又想起来更新博客,履行第一篇是说的后续文章的更新. 话不多说,首先需要准备一个Ubuntu系统,我用的是一台云服务器,ubuntu 16   64位的service版本 我是用root用户 开工 apt-get install software-properties-common add-apt-repository…
记录过程与问题 一.安装 以go版本的ethereum进行安装 brew tap ethereum/ethereum brew install ethereum # 如果希望基于ethereum的develop分支安装,执行 brew install ethereum --devel 问题: 1.由于我的MacOS系统一直没有更新,导致安装不上,提示XCode版本过低,更新XCode时又提示OS版本过低,没办法重新更新了macos monterey到最新版,然后把所有软件都重新更新了一次 2.g…
以太坊go-ethereum签名部分源码解析 golang标准库里的crypto/ecdsa椭圆曲线加密算法所提供的函数有: ecdsa.PublicKey结构体通过持有一个elliptic,Curve接口的实现体,可以提供椭圆曲线的所有属性,和相关操作:PublicKey的成员(X,Y),对应于算法理论中公钥的坐标. func GenerateKey(c elliptic.Curve, rand io.Reader) (*PrivateKey, error) elliptic.Curve接口声…
很多人迷惑于区块链和以太坊,不知如何学习,本文简单说了一下学习的一些方法和资源. 一. 以太坊和区块链的关系 从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取了技术架构和体系,称之为区块链技术.从比特币提取的区块链技术称之为区块链1.0时代,那个时候的应用主要以电子货币和去中心化交易为主,比如各种山寨币.而以太坊将区块链带入了2.0的时代,区块链2.0不是推翻了1.0,而是在1.0的基础上实现了区块知晓.价值知晓.图灵完备,并进行了细节优化,从而形成了以…
以太坊 EVM原理与实现 以太坊底层通过EVM模块支持合约的执行与调用,调用时根据合约地址获取到代码,生成环境后载入到EVM中运行.通常智能合约的开发流程是用solidlity编写逻辑代码,再通过编译器编译元数据,最后再发布到以太坊上. 代码结构 . ├── analysis.go //跳转目标判定 ├── common.go ├── contract.go //合约数据结构 ├── contracts.go //预编译好的合约 ├── errors.go ├── evm.go //执行器 对外…
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了从智能合约到go语言的自动编译,同时也可以自动提取到ABI信息. 具体可以参考: 第一课 go语言与智能合约调用的来龙去脉 第二课 智能合约自动化编译 本节主要工作 go语言模版编程 目标代码生成 目标代码的调用代码生成 配置文件的自动化生成 原有代码优化 想要自动化生成测试代码,首先你要知道目标代…