开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

以太坊 web3.py 签名转账

以太坊 web3.py 签名转账 本文节选自电子书《Netkiller Blockchain 手札》 Netkiller Blockchain 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com> 文档始创于2018-02-10 版权 © 2018 Netkiller(Neo Chan). All rights reserved. 版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。 内容摘要 这一部关于区块链开发及运维的电子书。 为什么会写区块链电子书?因为2018年是区块链年,区块链是一个风口,前几个风口我都错过了。例如web2.0, 云, 大数据等等,都从身旁擦肩而过。所以我要抓住这次。 这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟进软件版本的升级,做到内容最新,至少是主流。 这本电子书与其他区块链书籍有什么不同?市面上大部分区块链书籍都是用2/3去讲区块链原理,只要不到 1/3 的干货,干货不够理论来凑,通篇将...
netkiller- 发布于 21小时前 阅读 101

如何通过solc编译solidity编写的以太坊智能合约

# solc:solidity的编译器 solidity编写的以太坊智能合约可通过命令行编译工具solc来进行编译,成为以太坊虚拟机中的代码。solc编译后最终部署到链上形成我们所见到的各种智能合约。 作为一个solidity命令行编译工具,我们来看看官网都怎么说solc。 solc的安装很简单: ``` npm install -g solc //或者 npm install -g solc-cli //或者 sudo apt-get install solc ``` 安装完成后我们来看,```solc --help```,solc --help命令显示所有的solc命令选项。编译器可以生成各种输出,比如最终的二进制合约文件、语法树的汇编或者需要预计的要花费的gas等。```solc --bin sourceFile.sol```,可以编译后输出一个名为sourceFile.sol的智能合约文件。如果你想从```solc```获得更丰富的一些输出变量,你可以使用```solc -o outputDirectory --bin --ast --asm sourceFile.sol```。 你在部署[以太坊智能合约](http://xc.hubwiz.com/course/5a952991adb3847553d205d1)之前可以用```solc --optimize --bin sourceFile.sol```优化一下。默认情况下solc编译器会帮你优化200次。你也可以设置 ```--runs=1```,这样就按照最小化的方式进行编译,如果你希望多次交易不太在乎成本,那你可以设...
笔阁 发布于 4天前 阅读 188 评论 1 点赞 1

【警告】一场人工智能风暴即将席卷南京

热情似火的六月,OSC源创会将再次飞往同样热情的六朝古都--南京与大家见面,依然秉持着“自由,开放,分享”的思想,为大家带来非常精彩的【人工智能】专场主题分享,期待与大家见面~
OSC源创君

使用truffle部署以太坊智能合约到区块链

truffle是以太坊(ethereum)开发智能合约(smart contract)过程中最受欢迎的框架,本教程来安装构建一个基本的Truffle项目并部署一个智能合约到区块链。 开始本文之前希望你已经了解区块链、以太坊、智能合约等基本概念。 # 安装 Truffle 安装 Truffle 框架非常的简单,只需要一行命令: ``` npm install -g truffle ``` 当然前提是你已经安装好了NodeJS并且版本要在5.0以上。 Tunffle还要求一个运行的以太坊客户端,以便支持标准的JSON RPC API,有很多的选择比如Ganache、geth。 # 构建一个Truffle项目 要使用大量的Tunffle命令,我们通过使用一个现成的Tunffle项目来学习。第一步是创建一个Truffle项目。 我们可以创建一个空的项目模板,不过刚开始构建项目,我们可以使用[Tunffle Boxs](http://truffleframework.com/boxes),里面有很多的示例应用程序和项目模板。本文使用[MetaCoin box](http://truffleframework.com/boxes/metacoin),它创建一个可以在帐户之间传输代币的应用程序示例。 1.为构建Truffle项目创建新目录: ``` mkdir MetaCoin cd MetaCoin ``` 2.下载 MetaCoin box,使用`truffle unbox `来下载各种示例,如果要建一个空的不包括智能合约的项目可以使用...
笔阁 发布于 5天前 阅读 225 点赞 1

区块岛(杭州)信息科技有限公司 大面积招聘开始啦!

区块岛(杭州)信息科技有限公司 一、公司简介 区块岛(杭州)信息科技有限公司是以区块链技术驱动发展的高科技创新互联网企业,总部位于杭州,主要从事区块链技术开发、区块链社区建设运营、区块链投资运营等业务。公司以区块链服务实体经济、技术服务为己任,基于正本清源的原则,重点推动区块链行业的技术和开源生态发展。 公司坐落于美丽的杭州市西湖区云栖小镇,注册资金1000万元,正处于飞速发展时期。为更好地开展相关业务,现面向全国诚聘各路英才,欢迎成为我们团队成员,共同为推动区块链技术发展的最高梦想而努力。 公司待遇优厚,提供五险一金、交通补贴、员工宿舍或住房补贴、奖金等各种福利,优秀的员工可获得期权激励等。 二、岗位需求 2.1 项目经理 招聘人数:2人及以上 工作地点:北京、广州、杭州 工作待遇:20K~50K /月+期权激励 岗位职能: 负责大型互联网社区开发,带领研发团队完成整个项目的需求分析,架构设计及执行实施、运营支持等; 负责对整个项目的质量、进度管理,负责与相关部门沟通,完成整个项目的实施工作;对社区系统进行评估,提出系统升级改进规划、建议和意见,监测和管理项目资源和成本、风险等。具有较强的抗压能力、沟通能力、责任心...
OSC_Lucy 发布于 5天前 阅读 606

精通Hyperledger之使用Hyperledger composer搭建系统-mac系统(9)

  1、上一篇搭建成功之后,接下来创建一个新的业务网络 步骤点击如图:   在1的地方,输入自己的名字,我写的是tutorial-network 然后点击2,最后在右面3选择Deploy进行部署,成功之后截图: 2、连接到商业网络     现在我们已经创建并部署了业务网络,您应该会在我们的钱包中看到一个名为admin的新业务网络卡,用于我们的业务网络教程 - 网络。钱包可以包含业务网卡以连接到多个部署的业务网络。     连接到外部区块链时,业务网卡代表连接到业务网络所需的所有内容。它们包括连接详细信息,身份验证资料和元数据。     要连接到我们的业务网络,请点击我们业务网络卡下的立即连接。 我这里已经连接过了,所以是灰色的,你们第一次的话都是深颜色,可以点击进入页面如图: 3、添加模型文件 点击1那个文件,然后编辑2,将里面的内容替换成 /** * My commodity trading network */ namespace org.example.mynetwork asset Commodity identified by tradingSymbol { o String tradingSymbol o String description o String mainExchange o Double quantity --> Trader owner } participant Trader identified by tradeId { ...
木九天 发布于 2周前 阅读 191 点赞 1

开发基于以太坊智能合约的DApp

最近要找个H5的前端写个简单的DApp,聊过几个H5的工程师,都被跟以太坊交互的部分吓住了。虽然网上有N多的教程,但是对于H5工程师来说,还是有些困难。分析其原因,在于不了解ganache-cli(原来叫testrpc)/web3/以太坊节点/metamask之间的架构关系。 梳理一下架构关系: web3.js与以太坊通信是通过rpc的方式实现的。 以太坊节点本来提供了rpc的访问方式,但是因为以太坊节点的地址不确定,并且DApp需要访问钱包,所以用web3.js直接访问以太坊节点的rpc服务是不现实的。 ganache-cli模拟了一个以太坊的测试节点并提供对外的rpc访问方式(就是例子里经常说的http://localhost:7545或者http://localhost:8545)。同时在其中内置了M个以太坊帐号,用于测试。 MetaMask是一个以太坊的网络钱包插件,它也提供了web3的访问方式。而且可以通过这个插件指定后面的以太坊节点是什么。因为MetaMask是个钱包插件,所以解决了DApp中的支付问题。所以现在的DApp都依赖它。 有一个[以太坊教程](http://xc.hubwiz.com/course/5a952991adb3847553d205d1),是在线学习的,大家可以去看看,如果自己本机上搞,开发DApp的基本过程都是一样的如下: 1、安装NodeJS 2、安装truffle:一个开发DApp的...
笔阁 发布于 2周前 阅读 252 点赞 1

用Java为Hyperledger Fabric(超级账本)开发区块链智能合约链代码之部署与运行示例代码

### 部署并运行 Java 链代码示例 您已经定义并启动了本地区块链网络,而且已构建 Java shim 客户端 JAR 并安装到本地 Maven 存储库中,现在已准备好在之前下载的 Hyperledger Fabric 附带的一个 Java 链代码示例上构建、注册和调用交易。 **部署并运行链代码** 您将执行以下步骤: - 使用 Gradle 构建示例。 - 通过运行 Gradle 构建软件为您创建的脚本,向验证对等网络注册该示例。 - 使用 SoapUI 将示例部署到本地区块链网络。 - 使用 SoapUI 在示例链代码上调用交易。 #### 1.构建示例 导航到 $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/java/Example 目录。 接下来,通过命令行,使用此命令启动 Gradle 构建软件: ``` gradle -b build.gradle build ``` 您会看到以下输出: ``` $ cd GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/java/Example $ gradle -b build.gradle build Starting a Gradle Daemon (subsequent builds will be faster) :examples:chaincode:java:Example:compileJava :examples:chaincode:java:Example:processResources UP-TO-DATE :examples:chaincode:java:Example:classes :examples:chaincode:java:E...
笔阁 发布于 4周前 阅读 308 评论 2

Java为Hyperledger Fabric(超级账本)开发区块链链代码智能合约之环境部署

### 面向 Java 开发人员的链代码简介 您或许听说过区块链,但可能不确定它对 Java™ 开发人员有何用。本教程将帮助大家解惑。我将分步展示如何使用 Hyperledger Fabric v0.6 来构建、运行和执行使用 Java 语言编写的智能合约或链代码。您将安装一些工具,定义本地区块链网络,构建并运行一个链代码智能合约。 有关区块链的概述,请参阅 developerWorks 博客中的 “[区块链是什么?分布式账本技术入门](https://www.ibm.com/developerworks/community/blogs/3302cc3b-074e-44da-90b1-5055f1dc0d9c/entry/what-is-blockchain-hyperledger-fabric-distributed-ledger?lang=zh)”。 ### 前提条件 本教程假设您满足以下前提条件: - 听说过区块链或 Hyperledger Fabric 框架 - 拥有中等水平的 Java 编程知识,以及使用该语言和平台的经验 - 熟悉或(最好)精通使用: - Eclipse IDE - Docker 和 Docker Compose - Gradle - Linux 命令行 - SoapUI 或另一种 HTTP 客户端软件,比如 Postman 您还应该能够在最少的指导下在计算机上安装软件。由于篇幅所限,我不会介绍所有必要软件的详细安装说明;为您提供软件的网站应该提供了安装说明。 深入介绍本教程之前,我想简单说说区块链。...
笔阁 发布于 1个月前 阅读 327 评论 6

以太坊的3个重要项目:Casper(POS共识机制)、Plasma(子母链)、Sharding(分片)

在过去的几年里,以太坊已经成为加密货币领域最重要的项目。 作为市场中大多数代币的 底层基础设施,以太坊网络的健康对于加密数字币生态系统中的其他环节至关重要,以太坊 也一直在努力跟上增长。 交易容量一直困扰着以太坊网络,以至于许多专家推出了辅助项目 来创建替代性区块链,以便从头解决一些限制。 然而,以太坊团队并没有闲着,目前已经 有几个项目作为以太坊基金会的一部分进行孵化,重点就是解决当前版本的以太坊中的一些 基本限制。以太坊的第二层扩容解决方案改进了以太坊网络的一些基本方面,如共识协议或其安全模型。 考虑到以太坊公共区块链的规模和活跃度,你可以想象在不中断网络的情况下实施这些增强 措施是一项巨大的挑战。 虽然以太坊网络有好几个第二层扩容项目,但有三个以及接近全面 可用,而且我相信,这将是以太坊未来成功的关键。 Casper:POS共识机制 Casper可以说是最著名并且被广泛期待的以太坊项目,Casper提出了一种更现代的权益证明(PoS)模型, 用来替代以太坊传统的工作量证明(PoW)算法。它可以大大加快网络中的交易处理时间。 关于Casper已经有很多介绍文章,所以我不打算详细描述,但有一些值得重申的事情。 首先,让我们在高层面...
笔阁 发布于 1个月前 阅读 269

如何开发创建ERC20以太坊代币

看这篇文章需要对以太坊,代币,ERC20,智能合约等编程开发概念有基本了解。 什么是ERC20 可以把ERC20简单理解成以太坊上的代币协议,所有基于以太坊开发的代币合约都遵守这个协议。遵守这些协议的代币我们可以认为是标准化的代币,而标准化带来的好处是兼容性好。这些标准化的代币可以被各种以太坊钱包支持,用于不同的平台和项目。说白了,你要是想在以太坊上发行代币融资,必须要遵守ERC20标准。 ERC20的标准接口是这样的: contract ERC20 { function name() constant returns (string name) function symbol() constant returns (string symbol) function decimals() constant returns (uint8 decimals) function totalSupply() constant returns (uint totalSupply); function balanceOf(address _owner) constant returns (uint balance); function transfer(address _to, uint _value) returns (bool success); function transferFrom(address _from, address _to, uint _value) returns (bool success); function approve(address _spender, uint _value) returns (bool success); function allowance(addres...
笔阁 发布于 1个月前 阅读 159 点赞 1

以太坊 Truffle 测试代币锁仓,转账,空投

Netkiller Blockchain 手札 本文作者最近在找工作,有意向致电 13113668890 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com> 文档始创于2018-02-10 版权 © 2018 Netkiller(Neo Chan). All rights reserved.   版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。 http://www.netkiller.cn http://netkiller.github.io http://netkiller.sourceforge.net 微信订阅号 netkiller-ebook (微信扫描二维码) QQ:13721218 请注明“读者” QQ群:128659835 请注明“读者”   $Data$ 内容摘要 这一部关于区块链开发及运维的电子书。 为什么会写区块链电子书?因为2018年是区块链年,区块链是一个风口,前几个风口我都错过了。例如web2.0, 云, 大数据等等,都从身旁擦肩而过。所以我要抓住这次。 这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟...
netkiller- 发布于 1个月前 阅读 494

Ubuntu 14.04 下,Ontology 区块链浏览器开发

_温馨提示:需要在单机上部署好 Ontology,详情请见 [Ubuntu 14.04 下,Ontology 开发环境构建 、部署及测试](https://my.oschina.net/uchihamadara/blog/1790608)_ ### **安装Java** 可参考:[https://my.oschina.net/uchihamadara/blog/1798979](https://my.oschina.net/uchihamadara/blog/1798979) ### **安装Maven** 可参考:[https://my.oschina.net/uchihamadara/blog/1798979](https://my.oschina.net/uchihamadara/blog/1798979) ### **安装 MariaDB 10.2** [官网链接](https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna&distro=Ubuntu&distro_release=trusty--ubuntu_trusty&version=10.2) - 添加源 ``` sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.2/ubuntu trusty main' ``` - 安装 MariaDB ``` sudo apt-get update sudo apt-get install software-properties-common sudo apt-get install mariadb-server ``` 在安装中,会被要求设置 MariaDB 的 root 密码。 ![输入图片说明]...
绝世武神 发布于 1个月前 阅读 239

hyperledger超级账本技术简介

hyperledger超级账本 是 Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目。
Oo若离oO 发布于 1个月前 阅读 119 评论 2

用go语言创建区块链

本文你将用Go语言创建自己的区块链、理解哈希函数是如何保持区块链的完整性、掌握如何创造并添加新的块、实现多个节点通过竞争生成块、通过浏览器来查看整个链、了解所有其他关于区块链的基础知识。 但是,文章中将不会涉及工作量证明算法(PoW)以及权益证明算法(PoS)这类的共识算法,同时为了让你更清楚得查看区块链以及块的添加,我们将网络交互的过程简化了,关于 P2P 网络比如“全网广播”这个过程等内容将在后续文章中补上。 ## 开发环境 我们假设你已经具备一点 Go 语言的开发经验。在安装和配置 Go 开发环境后之后,我们还要获取以下一些依赖: ``` ~$ go get github.com/davecgh/go-spew/spew ``` `spew`可以帮助我们在终端中中直接查看 struct 和 slice 这两种数据结构。 ``` ~$ go get github.com/gorilla/mux ``` Gorilla 的 `mux` 包非常流行, 我们用它来写 web handler。 ``` ~$ go get github.com/joho/godotenv ``` `godotenv `可以帮助我们读取项目根目录中的`.env` 配置文件,这样就不用将 http端口之类的配置硬编码进代码中了。比如像这样: ``` ADDR=8080 ``` 接下来,我们创建一个 `main.go` 文件。之后的大部分工作都围绕这个文件,开始写代码吧!...
笔阁 发布于 1个月前 阅读 229

以太坊使用数字货币(通证)完成去中心化投票DApp

使用Truffle开发框架,并添加通证对之前的投票DApp改造,改造后的投票DApp功能主要为:每个投票者需要先使用以太币购买投票通证,购买的越多则可以投票的数量也就越多,相当于股票 所拥有的股票越多,则在董事会的投票权也就越多。
Oo若离oO 发布于 2个月前 阅读 413 点赞 1

Hyperledger Fabric 超级账本的硬伤

在使用超级账本的过程中我发现一个问题,超级账本无法并发操作一个 key,stub.PutState 是异步执行,我们无法确认它是否执行完成,在没有执行完成之前再发起操作,就会产生覆盖。这个问题限制了超级账本的很多场景应用,这是超级账本的硬伤。
netkiller- 发布于 2个月前 阅读 166 评论 2

以太坊区块链使用web3开发自己第一个DApp

在学习了最基础的一些以太坊知识以及开发框架搭建完成之后,可以尝试开发自己的第一个DApp,此处使用Truffle开发框架,Remix编译环境,Genache测试客户端,具体操作如下
Oo若离oO 发布于 2个月前 阅读 501

以太坊智能合约部署与交互

启动容器来执行geth命令 root@ubu-blockchain2:~# docker run -i blockchain101/ethereum-geth:1.6.5 geth attach http://45.32.252.88:8201 Welcome to the Geth JavaScript console! instance: Geth/01/v1.6.5-stable/linux-amd64/go1.8 coinbase: 0x4c57e7e9c2f728046ddc6e96052056a241bdbd0a at block: 6064 (Wed, 02 Aug 2017 01:13:50 UTC) datadir: /ethcluster/779977/data/01 modules: admin:1.0 eth:1.0 net:1.0 rpc:1.0 web3:1.0 查看我们的账户和余额 eth.getBalance(eth.accounts[0]) 11000000000000000000 eth.getBalance(eth.accounts[1]) 0 eth.accounts[0] "0x4c57e7e9c2f728046ddc6e96052056a241bdbd0a" > eth.accounts[1] "0xe82e2f0a5abd8774767b9751659976f9c4f59181" 发起一笔交易 eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(3,'ether')}) "0x0075da712d26aea17d6647035107f509e13eaf3d113c1577db14d4cc4216caec" 查看交易细节 > eth.getTransaction("0x0075da712d26aea17d6647035107f509e13eaf3d113c1577db14d4cc4216caec") { blockHash: "0x3115703894dc6015c96ef4de3e5615f416498ca1f98590...
笔阁 发布于 2个月前 阅读 178

以太坊智能合约虚拟机(EVM)原理与实现

solisolidity最终执行底层依赖于EVM虚拟机,了解evm的运作流程有利于写出更加高效节省的合约
魂祭心 发布于 2个月前 阅读 378

solidity语言开发智能合约

## 一个简单的智能合约 在Solidity中,一个智能合约由一组代码(合约的函数)和数据(合约的状态)组成。智能合约位于以太坊区块链上的一个特殊地址。*uint storedData**;* 这行代码声明了一个状态变量,变量名为*storedData*,类型为 *uint* (256bits无符号整数)。你可以认为它就像数据库里面的一个存储单元,跟管理数据库一样,可以通过调用函数查询和修改它。在以太坊中,通常只有合约的拥有者才能这样做。在这个例子中,函数 *set* 和 *get* 分别用于修改和查询变量的值。 跟很多其他语言一样,访问状态变量时,不需要在前面增加 this. 这样的前缀。 这个合约还无法做很多事情(受限于以太坊的基础设施),仅仅是允许任何人储存一个数字。而且世界上任何一个人都可以来存取这个数字,缺少一个(可靠的)方式来保护你发布的数字。任何人都可以调用set方法设置一个不同的数字覆盖你发布的数字。但是你的数字将会留存在区块链的历史上。稍后我们会学习如何增加一个存取限制,使得只有你才能修改这个数字。 先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节。 ### Storage ``` contract SimpleStorage { uint storedData; functi...
智能合约 发布于 2个月前 阅读 67

5种2018年值得推荐的以太坊钱包

这个指南希望能帮助新用户了解目前有哪些流行的以太坊钱包,哪个钱包更加安全, 哪个钱包更加好用,我们会根据不同的需求来进行推荐,同时也提供了五种钱包的官方下载地址。 ## 1#:Jaxx Jaxx是一款功能强大的以太坊钱包,设计很美观,用起来体验非常好。 ![5种2018年值得推荐的以太坊钱包](https://static.oschina.net/uploads/img/201804/28004001_NV8P.png) Jaxx的主要特性包括: - 单一主种子备份 - 可以轻松切换比特币和以太币 - 单屏幕操作 - 支持使用原生相机扫描 - 多币种 - 可用余额显示 - 生成自定义金额的QR码 使用Jaxx钱包的一个主要好处是除了比特币和以太坊之外还支持其他代币。除此之外, Jaxx还可以与Shapeshift集成,允许用户在Jaxx支持的所有货币之间进行货币兑换。 出于这个原因,如果你更加关注数字货币的交易,我们强烈推荐Jaxx。 [官方下载地址](https://jaxx.io/support.html) ## 2#:MyEtherWallet MyEtherWallet(MEW)是以太坊社区最受欢迎的钱包之一,在手机或台式机上都可以使用。 ![5种2018年值得推荐的以太坊钱包](https://static.oschina.net/uploads/img/201804/28004038_4Sc6.png) MEW是一个开放源代码的钱包,可以让你发送、创建和接收以...
汇智网教程 发布于 2个月前 阅读 39

以太坊账户类型如何判断

以太坊中有两类账户,它们共用同一个地址空间。 外部账户,该类账户被公钥-私钥对控制(人类)。 合约账户,该类账户被存储在账户中的代码控制。 外部账户的地址是由公钥决定的,合约账户的地址是在创建该合约时确定的。 合约账户存储了代码,外部账户则没有,除了这点以外,这两类账户对于EVM来说是一样的。 每个账户有一个key-value形式的持久化存储。其中key和value的长度都是256比特,名字叫做storage. 另外,每个账户都有一个以太币余额(单位是“Wei"),该账户余额可以通过向它发送带有以太币的交易来改变。 web3实现 使用web3.eth.getCode()方法可以判断一个给定的地址的账户是外部账户,还是合约账户。这个函数返回指定地址的代码,由于外部账户没有代码,因此仅仅会返回0x,而合约账户将会返回0x开头的16进制代码字符串。例如: var code = web3.eth.getCode("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8") if(code === '0x') console.log('外部账户') else console.log('合约账户')   在solidity中实现 在合约内,可以使用EVM汇编代码来获取指定地址处的代码大小,显然,普通账户地址将返回0: contract EzDemo { function isContract(address addr) retu...
智能合约 发布于 2个月前 阅读 31

区块链开发:为什么你应该学习?

为什么你要学习区块链技术开发?在回答这个问题之前,需要先指出一点: >区块链现在是一个过度估值的领域, 这些高估值是不可持续的,而且肯定会崩溃。 这样的泡沫之前发生过,并且可能会再次发生。 但是如果长期在这个领域工作,你将学会摆脱泡沫的影响。 用Emin Gun Sirer的话来说,__价格是加密货币中最无趣的部分,区块链才是最重要的部分,这一技术终将改变世界__。 我无法帮你决定是否应该进入区块链开发领域,但可以告诉你当初打动我进入这一领域的 五个理由: ## No.1 区块链技术现在还处于早期阶段 比特币大约是在10年前发明的,但是在最近的几年,创新才开始提速,尤其是在2015年推出了 以太坊之后。这个领域的大多数新公司以及创意都建立在以太坊之上,而以太坊目前还是非常 不成熟的。 即使你现在才开始,依然可以在几年内成为世界级的区块链专家。 大多数人只是没有这么长时间, 这不会很难赶上。你现在开始,就像那些在2000年左右开始研究深度学习的专家。 ## No.2 区块链领域还没有建立强大的人才渠道 大学里大多数最优秀、最聪明的学生,目前都专注于机器学习、网络编程或游戏开发。 虽然 区块链在公众话题中变得越来越热门,但它仍然是一个怪异而且富有颠...
汇智网教程 发布于 2个月前 阅读 24 评论 1

【4】安装组件--(1)playground

如果您已经在线尝试了Composer,则会看到浏览器应用程序“Playground”。您也可以在您的开发机器上本地运行此功能,为您提供查看和演示业务网络的用户界面。 用于简单编辑和测试的浏览器应用商业网络: 复制 npm install -g composer-playground
做龙龙 发布于 6天前 阅读 1

工欲善其事必先利其器。100万项目资金助你成为自由职业者

广告
优质开发商申请规则细则落地了,赶紧来看看自己符合不符合。
众包

万向区块链肖风:法定数字货币猜想

来源:本文首刊于第528期《财经》杂志,编辑:陆玲 作者:万向控股有限公司副董事长兼执行董事,万向区块链董事长兼总经理肖风    猜想者,不着调的狂想也! “数字经济”,逐渐成为了热词。什么是数字经济?数字经济诞生在数字世界,依据数学算法来运行。数字经济不能等同于互联网经济,也不是“互联网+”那么简单。我非常认同中国科学院王飞跃研究员的观点:数字世界与物理世界是一种平行世界的关系,它是物理世界的映射,它们是一对孪生体。由此可见,数字经济与工业经济也是一种映射关系,数字经济与工业经济也应该是一种平行关系,它有自己独特的、与我们所熟悉的工业经济完全不同的新规则。 底层技术 数字经济的运行规则是算法规则。其实不管是人工智能还是区块链,驱动它们的核心其实是各种算法,只不过一个是AI算法,另一个是密码学算法而已。而要让算法高效运行,就必须把它工程化为计算机代码。在一个以“代码”为通用语言的数字经济世界里,经济交易也代码化、自动化、智能化了。代码化的经济交易,需要代码化的记账方法,代码化的记账方法需要代码化的账户体系,代码化的账户体系需要代码化的货币。 2009年比特币区块链的诞生,恰逢其时地给我们送来了分布式...
万向区块链 发布于 5天前 阅读 6

以太坊 web3.py 签名转账

以太坊 web3.py 签名转账 本文节选自电子书《Netkiller Blockchain 手札》 Netkiller Blockchain 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com> 文档始创于2018-02-10 版权 © 2018 Netkiller(Neo Chan). All rights reserved. 版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。 内容摘要 这一部关于区块链开发及运维的电子书。 为什么会写区块链电子书?因为2018年是区块链年,区块链是一个风口,前几个风口我都错过了。例如web2.0, 云, 大数据等等,都从身旁擦肩而过。所以我要抓住这次。 这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟进软件版本的升级,做到内容最新,至少是主流。 这本电子书与其他区块链书籍有什么不同?市面上大部分区块链书籍都是用2/3去讲区块链原理,只要不到 1/3 的干货,干货不够理论来凑,通篇将...
netkiller- 发布于 21小时前 阅读 101

如何通过solc编译solidity编写的以太坊智能合约

# solc:solidity的编译器 solidity编写的以太坊智能合约可通过命令行编译工具solc来进行编译,成为以太坊虚拟机中的代码。solc编译后最终部署到链上形成我们所见到的各种智能合约。 作为一个solidity命令行编译工具,我们来看看官网都怎么说solc。 solc的安装很简单: ``` npm install -g solc //或者 npm install -g solc-cli //或者 sudo apt-get install solc ``` 安装完成后我们来看,```solc --help```,solc --help命令显示所有的solc命令选项。编译器可以生成各种输出,比如最终的二进制合约文件、语法树的汇编或者需要预计的要花费的gas等。```solc --bin sourceFile.sol```,可以编译后输出一个名为sourceFile.sol的智能合约文件。如果你想从```solc```获得更丰富的一些输出变量,你可以使用```solc -o outputDirectory --bin --ast --asm sourceFile.sol```。 你在部署[以太坊智能合约](http://xc.hubwiz.com/course/5a952991adb3847553d205d1)之前可以用```solc --optimize --bin sourceFile.sol```优化一下。默认情况下solc编译器会帮你优化200次。你也可以设置 ```--runs=1```,这样就按照最小化的方式进行编译,如果你希望多次交易不太在乎成本,那你可以设...
笔阁 发布于 4天前 阅读 188 评论 1 点赞 1

使用truffle部署以太坊智能合约到区块链

truffle是以太坊(ethereum)开发智能合约(smart contract)过程中最受欢迎的框架,本教程来安装构建一个基本的Truffle项目并部署一个智能合约到区块链。 开始本文之前希望你已经了解区块链、以太坊、智能合约等基本概念。 # 安装 Truffle 安装 Truffle 框架非常的简单,只需要一行命令: ``` npm install -g truffle ``` 当然前提是你已经安装好了NodeJS并且版本要在5.0以上。 Tunffle还要求一个运行的以太坊客户端,以便支持标准的JSON RPC API,有很多的选择比如Ganache、geth。 # 构建一个Truffle项目 要使用大量的Tunffle命令,我们通过使用一个现成的Tunffle项目来学习。第一步是创建一个Truffle项目。 我们可以创建一个空的项目模板,不过刚开始构建项目,我们可以使用[Tunffle Boxs](http://truffleframework.com/boxes),里面有很多的示例应用程序和项目模板。本文使用[MetaCoin box](http://truffleframework.com/boxes/metacoin),它创建一个可以在帐户之间传输代币的应用程序示例。 1.为构建Truffle项目创建新目录: ``` mkdir MetaCoin cd MetaCoin ``` 2.下载 MetaCoin box,使用`truffle unbox `来下载各种示例,如果要建一个空的不包括智能合约的项目可以使用...
笔阁 发布于 5天前 阅读 225 点赞 1

Infura

infura.io提供了托管的以太坊节点,那么,如何将智能合约部署到infura提供的托管节点?本教程将介绍如何配置truffle来将你的智能合约通过infura发布到以太坊网络上。 如果你还没有看过前序教程,建议先阅读它们: - [什么是智能合约](https://my.oschina.net/u/3843525/blog/1800771) - [以太坊智能合约开发](https://my.oschina.net/u/3843525/blog/1800800) - [以太坊智能合约部署](https://my.oschina.net/u/3843525/blog/1800826) Infura是一个托管的以太坊节点集群,可以将你开发的以太坊智能合约部署到infura提供的节点上,而无需搭建自己的以太坊节点。 可能你还不了解Infura,但如果你使用过MetaMask,那么就已经接触过Infura了,因为它是MetaMask背后的以太坊供应商。 出于安全原因,Infura不管理你的私钥,这意味着Infura不能代表你签署交易。 但是,Infura可以通过使用`HDWalletProvider`来签署交易。 该服务可以处理事务签名以及与以太坊网络的连接。 点击[这里](https://github.com/trufflesuite/truffle-hdwallet-provider)了解更多关于HDWalletProvider的信息 。 本教程将向你展示如何使用Infura将现有的dapp迁移到Infura支持的以太坊网络。 在这个特定的例...
以太坊教程 发布于 2个月前 阅读 455

EOS官方cleos钱包入门教程

# EOS官方cleos钱包入门教程 ## 一、安装docker http://get.daocloud.io/#install-docker-for-mac-windows ## 二、部署EOS钱包服务 ### 1、下载EOS官方镜像 ``` service docker start docker pull eosio/eos ``` ### 2、创建钱包目录 ``` mkdir -p /data/eosio/eosio-wallet #设置权限 chmod 775 /data/eosio/eosio-wallet ``` ### 3、创建钱包服务 ``` # 如果曾经创建过keosd容器需要先删除 docker stop keosd docker rm keosd # 创建keosd容器启动服务 docker run -d --restart=unless-stopped --name keosd \ -v /data/eosio/eosio-wallet:/opt/eosio/bin/data-dir \ -v /data/eosio/eosio-wallet:/root/eosio-wallet \ -t eosio/eos /opt/eosio/bin/keosd \ --wallet-dir /opt/eosio/bin/data-dir \ --http-server-address=127.0.0.1:8900 ``` ## 三、创建EOS操作命令cleos(请根据主网公告选择可信的正式节点URL) ``` #mac系统 vim ~/.bash_profile #增加如下行 alias cleos='docker exec -i keosd /opt/eosio/bin/cleos --wallet-url http://127.0.0.1:8900 -u http://mainnet.genereos.io' #保存 :wq #使生效 source ~/.bash_profile # 查看主网信息(确保为主网c...
酋长思密达 发布于 1周前 阅读 191

10个区块链应用成功案例_201802

这是[DappRadar](https://dappradar.com/)根据其对以太坊交易的监测而自动生成的2018年2月以太坊区块链应用活跃度排行榜,计算的主要依据是应用在一周内的交易量,活跃度越高则意味着应用越有可能成功: ![dapp billboard](https://img-blog.csdn.net/20180422013737186?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ## 1. EtherCraft 地址:https://dappradar.com/app/17/ethercraft 这是一个RPG游戏,其中包含各种各样的物品,运行着超过100(!!!)个智能合约,是目前最活跃的以太坊游戏,每周有超过102,047次交易。 ## 2. CryptoKitties   地址:https://dappradar.com/app/3/cryptokitties 我们都知道这个,对吧? 我们怎么能忘了这个以太坊上的游戏先锋,它以每周37,249次交易在十大活跃DApp榜中排在第二位。 ## 3. Etheroll 地址:https://dappradar.com/app/10/etheroll 可能是最受欢迎的去中心化赌场。 它不仅7天交易量突破7,898 ETH ,而且以每周交易次数 18,251 排在十大活跃DApp榜中第三位! > 如果你开始对以太坊区块链 应用开发产生兴趣,可以访问汇智网提供的出色的在线互动...
以太坊教程 发布于 2个月前 阅读 365

ERC20代币合约详解,附实现代码

目前几乎所有用于艾希欧筹集资金的代币,都是基于同样的技术:以太坊ERC-20标准。 因此这些代币实际上就是实现了ERC20标准的智能合约。在下文中,我们将全面剖析ERC20 标准规范,并给出一个ERC20代币合约的完整实现代码。此外,在下文中我们将不加区分地使用 __通证__和__代币__来表示遵循ERC20规范的智能合约,虽然前者完全涵盖了后者的范围。 > 如果你希望马上开始学习以太坊智能合约和应用开发,可以访问汇智网提供的出色的在线互动教程: > >- [以太坊智能合约和应用开发入门](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=oschina7878) >- [以太坊去中心化电商DApp实战开发](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=oschina7878) ERC20是Fabian Vogelsteller在2015年末提出的以太坊改进建议,它是许多流行的合约都在遵循的标准。 ERC20使通证智能合约的行为非常类似于传统的加密货币,例如在不同账户之间发送和接收、 查看通证总供应量或者查看某个地址可用的通证余额​,就像比特币或以太币一样。这类似于用以太坊钱包 发送和接收以太币、查看流通中的以太币总量、查看特定钱包的货币余额等。 ## ERC20接口 ERC20定义了一些标准...
汇智网教程 发布于 1个月前 阅读 528

如何将任意数据保存到以太坊区块链?

虽然有北大博士讲,95%的区块链项目都没有前途,但我们知道区块链还是有它的优势,比如数据的不可篡改性对于版权保护有相当大的意义,而地址的匿名性则有其他潜在的用途。那么,如何将任意数据,比如图像或文本写入以太坊区块链呢?本文将讲解如何使用web3.js实现这一功能并给出相应的实现代码。 实现任意数据上链的核心是[web3.eth.sendTransaction()](https://blog.csdn.net/shebao3333/article/details/80077975)方法的使用,我们将借助一个转账交易来完成任意数据上链的任务。在要发送的交易对象中,使用`data`字段就可以传入任意的16进制字符串。 ## 将数据转换为16进制字符串 我们可以使用[web3.toHex()](https://blog.csdn.net/shebao3333/article/details/80062811)方法将一个字符串转换为16进制字符串: ``` let data = web3.toHex('你可以将任意数据写入以太坊区块链') ``` 得到的data值为:`0x4f6053ef4ee55c064efb610f6570636e519951654ee5592a574a533a575794fe`。 当然不一定需要使用`web3.toHex()`方法,可以使用任何能够得到16进制串的方法,例如在NodeJS中使用`Buffer`: ``` let data = '0x' + Buffer.from('使用Buffer更好处理图像数据').toString('hex'...
汇智网教程 发布于 2个月前 阅读 592 评论 6 点赞 1

区块链3.0_精通Hyperledger之搭建Frbric环境(1)

1、安装环境 2、安装命令 3、没做出来留言,十分钟内回复你(有效时间 2018-10-01)
木九天 发布于 1个月前 阅读 506

web3.eth.sendRawTransaction

>如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: > >- [以太坊DApp实战入门教程](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=oschina7878) >- [以太坊去中心化电商应用开发实战](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=oschina7878) 发送一个已经签名的交易。比如可以用下述[签名的例子](https://github.com/SilentCicero/ethereumjs-accounts)。 如果交易是一个合约创建,请使用web3.eth.getTransactionReceipt()在交易完成后获取合约的地址。 调用: ``` web3.eth.sendRawTransaction(signedTransactionData [, callback]) ``` 参数: - `signedTransacionData`: String - 16进制格式的签名交易数据。 - `callback`: Function - 回调函数,用于支持异步的方式执行7。 返回值: - `String` - 32字节的16进制格式的交易哈希串。 示例: ``` var Tx = require('ethereumjs-tx'); var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex') var rawTx = { nonce: '0x00', gasPrice: '0x09184e72a000', gasLimit: '0x2710', to: '0x0000000000...
汇智网教程 发布于 2个月前 阅读 215

以太坊 p2p Server 原理及实现

# 以太坊p2p原理与实现 区块链技术的去中心依赖于底层组网技术,以太坊的底层实现了p2pServer,大约可以分为这样三层。 - 底层路由表。封装了kad路由,节点的数据结构以及计算记录,节点搜索,验证等功能。 - 中层peer抽象,message开放发送接口,server对外提供peer检测,初始化,事件订阅,peer状态查询,启动,停止等功能 - 以太坊最上层peer,peerset再封装,通过协议的Run函数,在中层启动peer时,获取peer,最终通过一个循环截取稳定peer,包装在peerset中使用。 ## 底层路由表 这里简化问题仅讨论Node Discovery Protocol。 这一层维护了一个buckets桶,总共有17个桶,每个桶有16个节点和10个替换节点。 Node放入时先要计算hash和localNode的距离。再按距离选择一个桶放进去,取的时候逐个计算target和每个桶中对象的举例,详细参考closest函数,后面会贴出来。 距离公式满足:f(x,y)=256-8*n-map(x[n+1]^y[n+1]) 注:n为相同节点数量 map为一个负相关的映射关系。 简单来说就是相似越多,值越小。细节参考Node.go的logdist函数。 这里需要了解算法Kademlia, ``` . ├── database.go //封装node数据库相关操作 ├── node.go //节点数据结构 ├── ntp.go //同...
魂祭心 发布于 2个月前 阅读 367

Solidity

在本文中,我们将介绍以太坊智能合约的开发语言solidity。 Solidity是一种语法类似JavaScript的高级语言。它被设计成以编译的方式生成以太坊虚拟机代码。在后续内容中你将会发现,使用它很容易创建用于投票、众筹、封闭拍卖、多重签名钱包等等的合约。 ## 编写第一个合约 让我们先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节。 ``` contract SimpleStorage { uint storedData; function set(uint x) { storedData = x; } function get() constant returns (uint retVal) { return storedData; } } ``` 在Solidity中,一个合约由一组代码(合约的函数)和数据(合约的状态)组成。合约位于以太坊区块链上的一个特殊地址。 *uint storedData*; 这行代码声明了一个状态变量,变量名为storedData,类型为 uint (256bits无符号整数)。你可以认为它就像数据库里面的一个存储单元,跟管理数据库一样,可以通过调用函数查询和修改它。在以太坊中,通常只有合约的拥有者才能这样做。在这个例子中,函数 set 和 get 分别用于修改和查询变量的值。 跟很多其他语言一样,访问状态变量时,不需要在前面增加 this. 这样的前缀。 这个合约还无...
以太坊教程 发布于 2个月前 阅读 400

以太坊共识机制

以太坊常用的三种共识机制(算法):PoW(Proof of Work),工作量证明机制;PoS(Proof of Stake):股权证明机制;DPoS(Delegated Proof of Stake),授权股权证明机制。这些共识机制都能在现实生活中找到对应的经济模型,吸引人们参与其中,组成安全网络,并有序运行。但是,长期来看它们各有优缺点,都存在失败的可能。 下面我们看看这些机制的演进过程。 PoW(Proof of Work):工作量证明机制 1.基本原理 这是比特币采用的共识机制,也是最早的。理解起来,很简单,就是“按劳取酬”,你付出多少劳动(工作),就会获得多少报酬(比特币等加密货币)。在网络世界里,这里的劳动就是你为网络提供的计算服务(算力x时长),提供这种服务的过程就是“挖矿”。 那么“报酬”怎么分配呢?假如是真的矿藏,显然在均匀分布的前提下,人们“挖矿”所得的比重与各自提供的算力成正比,通俗一点就是,能力越强获得越多。 2.优点 机制本身当然很复杂,有很多细节,比如:挖矿难度自动调整、区块奖励逐步减半等,这些因素都是基于经济学原理,能吸引和鼓励更多人参与。 理想状态,这种机制,可以吸引很多用户参与其中,特别是越先参与的获得越多,会促使加密货币的初始阶段发展迅速,节点网络迅速...
智能合约 发布于 2个月前 阅读 234

以太坊区块链使用NodeJs、Web3开发投票DApp

本示例讲解使用NodeJs、Web3开发投票DApp过程,Ganache配合进行测试,不使用Truffle框架,可以更好的理解以太坊最基本的操作逻辑。
Oo若离oO 发布于 2个月前 阅读 437 评论 2

ganache

ganache-cli是以太坊节点仿真器软件ganache的命令行版本,可以方便开发者快速进行以太坊DApp的开发与测试。 ## 安装 ``` npm install -g ganache-cli ``` ## 启动 ``` ~$ ganache-cli ``` ## 启动选项 - -a 或 --accounts: 指定启动时要创建的测试账户数量。 - -e 或 --defaultBalanceEther: 分配给每个测试账户的ether数量,默认值为100。 - -b 或r --blockTime: 指定自动挖矿的blockTime,以秒为单位。默认值为0,表示不进行自动挖矿。 - -d 或 --deterministic: 基于预定的助记词(`mnemonic`)生成固定的测试账户地址。 - -n 或 --secure: 默认锁定所有测试账户,有利于进行第三方交易签名。 - -m 或 --mnemonic: 用于生成测试账户地址的助记词。 - -p 或 --port: 设置监听端口,默认值为8545。 - -h 或 --hostname: 设置监听主机,默认值同NodeJS的`server.listen() `。 - -s 或 --seed: 设置生成助记词的种子。. - -g 或 --gasPrice: 设定Gas价格,默认值为20000000000。 - -l 或 --gasLimit: 设定Gas上限,默认值为90000。 - -f 或 --fork: 从一个运行中的以太坊节点客户端软件的指定区块分叉。输入值应当是该节点旳HTTP地址和端口,例如`http://local...
以太坊教程 发布于 2个月前 阅读 418

【警告】一场人工智能风暴即将席卷南京

热情似火的六月,OSC源创会将再次飞往同样热情的六朝古都--南京与大家见面,依然秉持着“自由,开放,分享”的思想,为大家带来非常精彩的【人工智能】专场主题分享,期待与大家见面~
OSC源创君

使用truffle部署以太坊智能合约到区块链

truffle是以太坊(ethereum)开发智能合约(smart contract)过程中最受欢迎的框架,本教程来安装构建一个基本的Truffle项目并部署一个智能合约到区块链。 开始本文之前希望你已经了解区块链、以太坊、智能合约等基本概念。 # 安装 Truffle 安装 Truffle 框架非常的简单,只需要一行命令: ``` npm install -g truffle ``` 当然前提是你已经安装好了NodeJS并且版本要在5.0以上。 Tunffle还要求一个运行的以太坊客户端,以便支持标准的JSON RPC API,有很多的选择比如Ganache、geth。 # 构建一个Truffle项目 要使用大量的Tunffle命令,我们通过使用一个现成的Tunffle项目来学习。第一步是创建一个Truffle项目。 我们可以创建一个空的项目模板,不过刚开始构建项目,我们可以使用[Tunffle Boxs](http://truffleframework.com/boxes),里面有很多的示例应用程序和项目模板。本文使用[MetaCoin box](http://truffleframework.com/boxes/metacoin),它创建一个可以在帐户之间传输代币的应用程序示例。 1.为构建Truffle项目创建新目录: ``` mkdir MetaCoin cd MetaCoin ``` 2.下载 MetaCoin box,使用`truffle unbox `来下载各种示例,如果要建一个空的不包括智能合约的项目可以使用...
笔阁 发布于 5天前 阅读 225 点赞 1

如何通过solc编译solidity编写的以太坊智能合约

# solc:solidity的编译器 solidity编写的以太坊智能合约可通过命令行编译工具solc来进行编译,成为以太坊虚拟机中的代码。solc编译后最终部署到链上形成我们所见到的各种智能合约。 作为一个solidity命令行编译工具,我们来看看官网都怎么说solc。 solc的安装很简单: ``` npm install -g solc //或者 npm install -g solc-cli //或者 sudo apt-get install solc ``` 安装完成后我们来看,```solc --help```,solc --help命令显示所有的solc命令选项。编译器可以生成各种输出,比如最终的二进制合约文件、语法树的汇编或者需要预计的要花费的gas等。```solc --bin sourceFile.sol```,可以编译后输出一个名为sourceFile.sol的智能合约文件。如果你想从```solc```获得更丰富的一些输出变量,你可以使用```solc -o outputDirectory --bin --ast --asm sourceFile.sol```。 你在部署[以太坊智能合约](http://xc.hubwiz.com/course/5a952991adb3847553d205d1)之前可以用```solc --optimize --bin sourceFile.sol```优化一下。默认情况下solc编译器会帮你优化200次。你也可以设置 ```--runs=1```,这样就按照最小化的方式进行编译,如果你希望多次交易不太在乎成本,那你可以设...
笔阁 发布于 4天前 阅读 188 评论 1 点赞 1

布隆过滤器与大数据去重、区块链

1. 布隆过滤器 1.1 算法简介 布隆过滤器(BloomFilter)由一个很长的二进制向量和一系列抗碰撞的Hash函数组成, 可以用于快速判断一个元素是否在一个集合中。优点:空间仅由二进制向量决定,并且查询时间远超一般算法(仅需计算k 个Hash函数的值);缺点:有一定的错误识别率,并且一旦元素被添加到布隆过滤器中就很难再将该元素从布隆过滤器中删除。 1.2 算法原理 初始状态时,BloomFilter是一个长度为m 的比特数组(二进制向量),每一位都置为0。 把1个新元素x 添加进BloomFilter,对x 计算k 个散列函数哈希值(哈希值作为比特数组的下标),将比特数组中对应位设置为1。 判断元素y 是否存在于BloomFilter中,对y 计算k 个散列函数哈希值,若对应位置的位皆为1,则说明y 存在于BloomFilter中。 1.3 算法实现 虽然布隆过滤器具有一定错误识别率,但可以通过调整m 和k 的值来使得错误识别率可容忍,对于误判元素可以建立一个白名单。这里有一份代码实现:链接。 2. 应用场景:大数据去重 在面试阿里、腾讯时经常会问到“如何对大数据进行去重”的类似问题,比如:给定2个文件,里面保存的是url,对这2个文件中的url进行去重。这里提供3种解题思路: (1)把文件A切割成k 个...
初雪之音 发布于 3天前 阅读 23

EOS官方cleos钱包入门教程

# EOS官方cleos钱包入门教程 ## 一、安装docker http://get.daocloud.io/#install-docker-for-mac-windows ## 二、部署EOS钱包服务 ### 1、下载EOS官方镜像 ``` service docker start docker pull eosio/eos ``` ### 2、创建钱包目录 ``` mkdir -p /data/eosio/eosio-wallet #设置权限 chmod 775 /data/eosio/eosio-wallet ``` ### 3、创建钱包服务 ``` # 如果曾经创建过keosd容器需要先删除 docker stop keosd docker rm keosd # 创建keosd容器启动服务 docker run -d --restart=unless-stopped --name keosd \ -v /data/eosio/eosio-wallet:/opt/eosio/bin/data-dir \ -v /data/eosio/eosio-wallet:/root/eosio-wallet \ -t eosio/eos /opt/eosio/bin/keosd \ --wallet-dir /opt/eosio/bin/data-dir \ --http-server-address=127.0.0.1:8900 ``` ## 三、创建EOS操作命令cleos(请根据主网公告选择可信的正式节点URL) ``` #mac系统 vim ~/.bash_profile #增加如下行 alias cleos='docker exec -i keosd /opt/eosio/bin/cleos --wallet-url http://127.0.0.1:8900 -u http://mainnet.genereos.io' #保存 :wq #使生效 source ~/.bash_profile # 查看主网信息(确保为主网c...
酋长思密达 发布于 1周前 阅读 191

如何将任意数据保存到以太坊区块链?

虽然有北大博士讲,95%的区块链项目都没有前途,但我们知道区块链还是有它的优势,比如数据的不可篡改性对于版权保护有相当大的意义,而地址的匿名性则有其他潜在的用途。那么,如何将任意数据,比如图像或文本写入以太坊区块链呢?本文将讲解如何使用web3.js实现这一功能并给出相应的实现代码。 实现任意数据上链的核心是[web3.eth.sendTransaction()](https://blog.csdn.net/shebao3333/article/details/80077975)方法的使用,我们将借助一个转账交易来完成任意数据上链的任务。在要发送的交易对象中,使用`data`字段就可以传入任意的16进制字符串。 ## 将数据转换为16进制字符串 我们可以使用[web3.toHex()](https://blog.csdn.net/shebao3333/article/details/80062811)方法将一个字符串转换为16进制字符串: ``` let data = web3.toHex('你可以将任意数据写入以太坊区块链') ``` 得到的data值为:`0x4f6053ef4ee55c064efb610f6570636e519951654ee5592a574a533a575794fe`。 当然不一定需要使用`web3.toHex()`方法,可以使用任何能够得到16进制串的方法,例如在NodeJS中使用`Buffer`: ``` let data = '0x' + Buffer.from('使用Buffer更好处理图像数据').toString('hex'...
汇智网教程 发布于 2个月前 阅读 592 评论 6 点赞 1

Solidity

在本文中,我们将介绍以太坊智能合约的开发语言solidity。 Solidity是一种语法类似JavaScript的高级语言。它被设计成以编译的方式生成以太坊虚拟机代码。在后续内容中你将会发现,使用它很容易创建用于投票、众筹、封闭拍卖、多重签名钱包等等的合约。 ## 编写第一个合约 让我们先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节。 ``` contract SimpleStorage { uint storedData; function set(uint x) { storedData = x; } function get() constant returns (uint retVal) { return storedData; } } ``` 在Solidity中,一个合约由一组代码(合约的函数)和数据(合约的状态)组成。合约位于以太坊区块链上的一个特殊地址。 *uint storedData*; 这行代码声明了一个状态变量,变量名为storedData,类型为 uint (256bits无符号整数)。你可以认为它就像数据库里面的一个存储单元,跟管理数据库一样,可以通过调用函数查询和修改它。在以太坊中,通常只有合约的拥有者才能这样做。在这个例子中,函数 set 和 get 分别用于修改和查询变量的值。 跟很多其他语言一样,访问状态变量时,不需要在前面增加 this. 这样的前缀。 这个合约还无...
以太坊教程 发布于 2个月前 阅读 400

ERC20代币合约详解,附实现代码

目前几乎所有用于艾希欧筹集资金的代币,都是基于同样的技术:以太坊ERC-20标准。 因此这些代币实际上就是实现了ERC20标准的智能合约。在下文中,我们将全面剖析ERC20 标准规范,并给出一个ERC20代币合约的完整实现代码。此外,在下文中我们将不加区分地使用 __通证__和__代币__来表示遵循ERC20规范的智能合约,虽然前者完全涵盖了后者的范围。 > 如果你希望马上开始学习以太坊智能合约和应用开发,可以访问汇智网提供的出色的在线互动教程: > >- [以太坊智能合约和应用开发入门](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=oschina7878) >- [以太坊去中心化电商DApp实战开发](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=oschina7878) ERC20是Fabian Vogelsteller在2015年末提出的以太坊改进建议,它是许多流行的合约都在遵循的标准。 ERC20使通证智能合约的行为非常类似于传统的加密货币,例如在不同账户之间发送和接收、 查看通证总供应量或者查看某个地址可用的通证余额​,就像比特币或以太币一样。这类似于用以太坊钱包 发送和接收以太币、查看流通中的以太币总量、查看特定钱包的货币余额等。 ## ERC20接口 ERC20定义了一些标准...
汇智网教程 发布于 1个月前 阅读 528

以太坊钱包Metamask下载和安装方法

MetaMask是一个开源的以太坊钱包,能帮助用户方便地管理自己的以太坊数字资产, 但在国内由于网络原因,你可能下载不了。本文将介绍如何解决metamask钱包无法下载的问题。 ![metamask钱包安装](https://static.oschina.net/uploads/img/201804/27191704_5cLn.png) ## 方法1:本地包下载和安装 你可以按照以下操作步骤完成MetaMask钱包的安装: __STEP 1__ 点击链接:https://github.com/MetaMask/metamask-extension/releases __STEP 2__ 点击 “Assets” 列表下的 "metamask-chrome-4.4.0.zip" (或你看到的最新版), 下载并解压此压缩包 ![metamask钱包安装](https://static.oschina.net/uploads/img/201804/27191728_qBP4.jpg) __STEP 3__ 用谷歌浏览器 (Chrome) 打开链接:chrome://extensions: ![metamask安装](https://static.oschina.net/uploads/img/201804/27191758_PRDo.jpg) 选择 "加载已解压的扩展程序” (Load unpacked extension),在跳出菜单中选择刚才解压的文件包 __STEP 4__ 网页将跳转到新的页面,选择 “Get Chrome Extension" ![metamask安装](https://static.oschina.net/uploads/img/201804/27191821_fRFv.jpg) 执行上述步骤后,浏览器右上角将出现一...
汇智网教程 发布于 2个月前 阅读 77

区块链3.0_精通Hyperledger之搭建Frbric环境(1)

1、安装环境 2、安装命令 3、没做出来留言,十分钟内回复你(有效时间 2018-10-01)
木九天 发布于 1个月前 阅读 506

Ontology VBFT共识算法性能测试报告

# 测试背景 - 本次对本体的性能测试,代码全部来自本体GitHub开源代码,此版本没有加入并行处理和分片。所用的硬件环境是普通的云服务节点。 - 本次测试是在VBFT共识下,7共识节点的单链测试,不包含并行处理、分片 和 FPGA硬件加速 等官方还未开源的优化点。 - TPS(Transaction per Second)每秒交易处理笔数,反映了系统在同一时间内能处理业务的最大能力,是区块链的核心性能指标之一。Apache JMeter是Apache组织开发的基于Java的压力测试工具, 本文使用JMeter对Ontology 0.8.2 版本做压测,将测试过程及结果记录如下。相关测试工具及使用方法见:https://github.com/qiluge/VBFT_TPS_TEST # 测试小结 没有加入分片、并行处理 和 FPGA硬件加速 的前提下,本次共进行了10次测试,取10次结果的平均值,最终结果如下。此测试结果在公链中处于较高水准。 ``` 交易数:300万 发送速率:6000/s 发送时间:500s 落账成功率:99.1% 块数:40 处理时间:562s TPS:5341 峰值:5536 ``` > 注1:TPS = 成功交易数/(完成落账时间 - 开始发送交易时间) > 注2:峰值 即是 系统稳定运行 所能达到的最大TPS,算法为 取落账过程中 中间时段的 一到两分钟之内的落账笔数,除以落账时间...
绝世武神 发布于 1周前 阅读 799

ganache

ganache-cli是以太坊节点仿真器软件ganache的命令行版本,可以方便开发者快速进行以太坊DApp的开发与测试。 ## 安装 ``` npm install -g ganache-cli ``` ## 启动 ``` ~$ ganache-cli ``` ## 启动选项 - -a 或 --accounts: 指定启动时要创建的测试账户数量。 - -e 或 --defaultBalanceEther: 分配给每个测试账户的ether数量,默认值为100。 - -b 或r --blockTime: 指定自动挖矿的blockTime,以秒为单位。默认值为0,表示不进行自动挖矿。 - -d 或 --deterministic: 基于预定的助记词(`mnemonic`)生成固定的测试账户地址。 - -n 或 --secure: 默认锁定所有测试账户,有利于进行第三方交易签名。 - -m 或 --mnemonic: 用于生成测试账户地址的助记词。 - -p 或 --port: 设置监听端口,默认值为8545。 - -h 或 --hostname: 设置监听主机,默认值同NodeJS的`server.listen() `。 - -s 或 --seed: 设置生成助记词的种子。. - -g 或 --gasPrice: 设定Gas价格,默认值为20000000000。 - -l 或 --gasLimit: 设定Gas上限,默认值为90000。 - -f 或 --fork: 从一个运行中的以太坊节点客户端软件的指定区块分叉。输入值应当是该节点旳HTTP地址和端口,例如`http://local...
以太坊教程 发布于 2个月前 阅读 418

智能合约开发语言如何选择?

区块链技术入门,涉及那些编程开发语言?在本文中,将介绍比特币、超级账本Fabric和以太坊这三种区块链中,分别使用什么开发语言来进行[智能合约](https://my.oschina.net/u/3837977/blog/1808806)编程,并提供你进一步学习的资源链接。 ## 比特币 比特币是第一个真正意义上的区块链,不过,从严格意义上来讲,它对智能合约的开发者是不友好的。 可以用一种低门槛的编程语言[Bitcoin Script](https://en.bitcoin.it/wiki/Script)在比特币系统上编写智能合约。每个比特币地址都对应着一个Bitcoin Script程序。看起来是这样: ``` IF 2 3 CHECKMULTISIG ELSE "30d" CHECKSEQUENCEVERIFY DROP CHECKSIG ENDIF ``` 另一种较高级别的语言是Ivy,它可以编译成Bitcoin Script。Ivy能够帮助你编写自定义的比特币地址,这种地址与隔离见证(SegWit)兼容,在比特币协议(包括签名检查、hash特征值(commitment)和时间锁)的支持下,可以执行任意条件组合。例如: ``` contract EscrowWithDeplay{ sender: PublicKey recipient: PublicKey, escrow: PublicKey, delay: Duration, val: Value }{ clause transfer(sig1: Signature, sig2: Signature){ verify checkMultiSig([sender, ...
智能合约 发布于 1个月前 阅读 46 评论 2

区块链开发如何选择底层平台和开发语言?

大多数人并不需要自己重新创建一套区块链,而是基于现有的区块链底层平台去开发自己的应用,对于类似加密算法、 P2P技术、共识算法等只需要有个基本了解就可以了,暂时不需要深入研究。在文本中,将介绍三种主流的区块链底层平台:比特币、以太坊和超级账本Fabric,以及这些平台上的应用开发语言。 ## 比特币区块链开发 最早的区块链开发便是基于比特币的区块链网络进行开发了,由于比特币是全球最广泛使用和真正意义的去中心化应用,因此,围绕比特币的各种区块链技术非常多,这里不一一描述,只针对入门开发进行介绍。 基于比特币的区块链开发有两种方式,一种相对比较简单,基于Blockchain.info的API进行开发。Blockchain.info是比特币的最流行的比特币钱包和区块查询网站,同时也提供的比特币及其区块相关API。 Blockchain.info 提供了多种主流语言的API库,包括了比特币的钱包、支付、区块、交易数据、市场数据等多方面的API。 ​安装和使用Blockchain.info的API比较简单,首先你的机器需要有NodeJS环境,在Blockchain.info的申请接口授权码,安装Blockchain Wallet API服务程序,就可以开始配置和测试Blockchain Wallet API服务程序了,要进一步开发,可以根据你的开发...
汇智网教程 发布于 2个月前 阅读 100

区块链是什么?彻底理解只需40行python代码!

尽管有人认为区块链目前还是个不成熟的解决方案,但它无疑称得上是计算机发展历史上 的一个奇迹。但是,到底区块链是什么呢? 我们将通过动手实现一个迷你的区块链来帮你 真正理解区块链技术的核心原理。python源代码保存在[Github](https://gist.github.com/aunyks/8f2c2fd51cc17f342737917e1c2582e2)。 > 如果你希望马上开始学习以太坊区块链应用开发,可以访问汇智网提供的出色的在线互动教程: > >- [以太坊智能合约和应用开发入门](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=oschina7878) >- [以太坊去中心化电商DApp实战开发](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=oschina7878) ## 区块链 > 区块链是一个公开的数字账本,它按时间顺序记录比特币或其他加密货币发生的交易。 更一般的讲,区块链是一个公共数据库,新的数据将存储在一个被称为”块“的容器中,然后 块会被添加到一个不可篡改的链,因此被称为”区块链“。当我们谈到比特币或其他加密货币时, 这些数据指的是交易记录。当然,你可以将任何类型的数据存入区块链。 区块链技术已经催生了全新的、完全数字化的货币,如比特币和莱特币,这些货币并不是由 中央政府...
汇智网教程 发布于 1个月前 阅读 26

Infura

infura.io提供了托管的以太坊节点,那么,如何将智能合约部署到infura提供的托管节点?本教程将介绍如何配置truffle来将你的智能合约通过infura发布到以太坊网络上。 如果你还没有看过前序教程,建议先阅读它们: - [什么是智能合约](https://my.oschina.net/u/3843525/blog/1800771) - [以太坊智能合约开发](https://my.oschina.net/u/3843525/blog/1800800) - [以太坊智能合约部署](https://my.oschina.net/u/3843525/blog/1800826) Infura是一个托管的以太坊节点集群,可以将你开发的以太坊智能合约部署到infura提供的节点上,而无需搭建自己的以太坊节点。 可能你还不了解Infura,但如果你使用过MetaMask,那么就已经接触过Infura了,因为它是MetaMask背后的以太坊供应商。 出于安全原因,Infura不管理你的私钥,这意味着Infura不能代表你签署交易。 但是,Infura可以通过使用`HDWalletProvider`来签署交易。 该服务可以处理事务签名以及与以太坊网络的连接。 点击[这里](https://github.com/trufflesuite/truffle-hdwallet-provider)了解更多关于HDWalletProvider的信息 。 本教程将向你展示如何使用Infura将现有的dapp迁移到Infura支持的以太坊网络。 在这个特定的例...
以太坊教程 发布于 2个月前 阅读 455

开发一个智能合约

智能合约 关键字:智能合约,remix,Solidity,truffle,geth,leveldb,datadir,ganache,web3j 合约 合约也称合同、协议,是甲乙双方参与的,制定一系列条目规范双方权利与义务的文件。智能合约是电子化的,自动执行的,去中心化的,具有不可抵赖性,本质上它是一段代码,依托于区块链技术,它可以做很多事情,基于以太坊的智能合约可以让你的区块链扩展出任何你想要的功能。 我相信,智能合约是区块链的未来,因为基于它能做的商业模型太多样了,远远不仅是数字货币一种。 Solidity 智能合约的编程语言是Solidity,扩展名为.sol,它是基于C++、JavaScript、Python创造而来的,这里是官方文档。 Solidity是静态类型的,支持继承,有自己的函数库,它同样支持面向对象语言的自定义类型等其他功能。 Solidity编写的智能合约代码运行在EVM,即以太坊虚拟机,正如java编写的代码运行在JVM一样,在同一个区块链中每一个结点的EVM都是相同的运行环境。通过智能合约,可以开发匿名投票、匿名拍卖、众筹以及多重签名的钱包等,以太坊每一个结点可以有多个账户,所以每个结点都可以称作钱包,可以管理名下的账户,以及转账、挖矿等操作。 官方推荐IDE:Remix 其实Solidity智能合约...
智能合约 发布于 1个月前 阅读 381

以太坊智能合约示例

目前的智能合约基本都是运行在以太坊上。本文将通过一个简单而具体的智能合约实例来帮助大家理解智能合约的编写、部署与调用。这个例子很简单,但通过它你可以了解开发一个以太坊的智能合约的完整过程。 在之后的教程中,我们将结合不同的场景案例,分别举出不同的例子例如投票、众筹、拍卖、ERC20/ERC721代币发行等,并实现相应的solidity示例代码。我们希望你能在实践中逐步理解学习智能合约的开发语言solidity,理解智能合约的运行原理,并掌握必要的以太坊智能合约编程技能。 > 如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: >- [以太坊DApp实战开发入门](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=oschina7878) >- [去中心化电商DApp实战开发](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=oschina7878) ## 开发语言和开发环境选择 目前智能合约最受欢迎的编程语言为Solidity,但是并不只有Solidity。作为初学者,编写Solidity代码,我们可以使用Remix,它是一个基于浏览器的Soldity IDE,网址为:http://remix.ethereum.org/ 。Remix支持编写、测试和部署智能合约。 ## 编写代码 学一门语言的...
汇智网教程 发布于 2个月前 阅读 104

ERC20智能合约实现代码

在这篇教程中,我们将使用以太坊solidity来实现一个遵循以太坊ERC20代币规范的[智能合约](https://my.oschina.net/u/3790537/blog/1808764),并给出最终实现的solidity全部代码。 ## ERC20规范 ERC20约定了一个代币合约需要实现的接口: ``` // 接口标准 contract ERC20 { function totalSupply() constant returns (uint totalSupply); // 总发行量 function balanceOf(address _owner) constant returns (uint balance); // 代币分发(注意, 这个只有合约的Creator 可以调用) function transfer(address _to, uint _value) returns (bool success); // 这里是拥有者和拥有者之间的代币转移 function transferFrom(address _from, address _to, uint _value) returns (bool success); function approve(address _spender, uint _value) returns (bool success); function allowance(address _owner, address _spender) constant returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); // Token信息 string public constant name = "4FunC...
以太坊教程 发布于 1个月前 阅读 206 评论 1 点赞 1

10个区块链应用成功案例_201802

这是[DappRadar](https://dappradar.com/)根据其对以太坊交易的监测而自动生成的2018年2月以太坊区块链应用活跃度排行榜,计算的主要依据是应用在一周内的交易量,活跃度越高则意味着应用越有可能成功: ![dapp billboard](https://img-blog.csdn.net/20180422013737186?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ## 1. EtherCraft 地址:https://dappradar.com/app/17/ethercraft 这是一个RPG游戏,其中包含各种各样的物品,运行着超过100(!!!)个智能合约,是目前最活跃的以太坊游戏,每周有超过102,047次交易。 ## 2. CryptoKitties   地址:https://dappradar.com/app/3/cryptokitties 我们都知道这个,对吧? 我们怎么能忘了这个以太坊上的游戏先锋,它以每周37,249次交易在十大活跃DApp榜中排在第二位。 ## 3. Etheroll 地址:https://dappradar.com/app/10/etheroll 可能是最受欢迎的去中心化赌场。 它不仅7天交易量突破7,898 ETH ,而且以每周交易次数 18,251 排在十大活跃DApp榜中第三位! > 如果你开始对以太坊区块链 应用开发产生兴趣,可以访问汇智网提供的出色的在线互动...
以太坊教程 发布于 2个月前 阅读 365

众筹智能合约实现代码

实现一个好的idea常常需要付出巨大的努力,并且需要大量的资金。我们可以寻求用户捐赠,或者寻求投资机构投资,但这往往很难。 区块链提供了一种众筹的新形式——众筹[智能合约](https://my.oschina.net/u/3790537/blog/1808764)。募资人通过众筹合约设定好众筹目标,以及完成时间,设定不同众筹结果所对应的操作(例如目标失败退回全款、目标成功时受益人获得加密代币或ETH)。由于区块链不可篡改的特性,众筹合约会是一个非常吻合的应用场景。在本文中,我们将使用以太坊solidity来实现一个用于众筹的智能合约,并给出最终实现的solidity全部代码。 ## 代币和分布自治组织 这个例子中我们将通过解决两个重要的问题进行更好的众筹: - 如何管理资金,保证流动性; - 筹集资金后如何花钱。 区块链出现之前的众筹项目一般缺少流动性,投资人一旦错过众筹截止时间将无法参与众筹;一旦参与众筹,投资人也不能中途退出。智能合约通过发行代币的形式来记录投资额,并提供了类似股票市场的流动性。投资人可以选择交易或者继续持有。项目成功后投资者可以使用代币交换实物或者产品服务。项目失败的话投资者可以按照原先的约定退出,并且继续持有代币以表纪念。 同样,当前众筹项目...
以太坊教程 发布于 1个月前 阅读 104

以太坊 web3.py 签名转账

以太坊 web3.py 签名转账 本文节选自电子书《Netkiller Blockchain 手札》 Netkiller Blockchain 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com> 文档始创于2018-02-10 版权 © 2018 Netkiller(Neo Chan). All rights reserved. 版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。 内容摘要 这一部关于区块链开发及运维的电子书。 为什么会写区块链电子书?因为2018年是区块链年,区块链是一个风口,前几个风口我都错过了。例如web2.0, 云, 大数据等等,都从身旁擦肩而过。所以我要抓住这次。 这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟进软件版本的升级,做到内容最新,至少是主流。 这本电子书与其他区块链书籍有什么不同?市面上大部分区块链书籍都是用2/3去讲区块链原理,只要不到 1/3 的干货,干货不够理论来凑,通篇将...
netkiller- 发布于 21小时前 阅读 101

iExec Blockchain Marketplace for Cloud

iExec Releases the First-Ever Blockchain Marketplace for Trading Cloud Computing   Berlin, Germany, May 29, 2018. iExec has released its blockchain-based decentralized cloud marketplace. For the first time ever, it is now possible to trade computing power on a dedicated market just like any other commodity. Four cloud providers, TFCloud, Stimergy, Cloud&Heat and Nerdalize have already announced their participation in this network. The marketplace allows application developers to access affordable, secure and scalable computing power on-demand. Each transaction between buyers and sellers is securely audited and certified by the Proof-of-Contribution algorithm, which verifies every off-chain computation executed. A decentralized marketplace for computing power Emerging applications in the fields of artificial intelligence, big data, fintech and IoT are radically transforming every walk of life. The world is in the midst of a technological transition that will enhance our existence i...
openthings 发布于 21小时前 阅读 3

布隆过滤器与大数据去重、区块链

1. 布隆过滤器 1.1 算法简介 布隆过滤器(BloomFilter)由一个很长的二进制向量和一系列抗碰撞的Hash函数组成, 可以用于快速判断一个元素是否在一个集合中。优点:空间仅由二进制向量决定,并且查询时间远超一般算法(仅需计算k 个Hash函数的值);缺点:有一定的错误识别率,并且一旦元素被添加到布隆过滤器中就很难再将该元素从布隆过滤器中删除。 1.2 算法原理 初始状态时,BloomFilter是一个长度为m 的比特数组(二进制向量),每一位都置为0。 把1个新元素x 添加进BloomFilter,对x 计算k 个散列函数哈希值(哈希值作为比特数组的下标),将比特数组中对应位设置为1。 判断元素y 是否存在于BloomFilter中,对y 计算k 个散列函数哈希值,若对应位置的位皆为1,则说明y 存在于BloomFilter中。 1.3 算法实现 虽然布隆过滤器具有一定错误识别率,但可以通过调整m 和k 的值来使得错误识别率可容忍,对于误判元素可以建立一个白名单。这里有一份代码实现:链接。 2. 应用场景:大数据去重 在面试阿里、腾讯时经常会问到“如何对大数据进行去重”的类似问题,比如:给定2个文件,里面保存的是url,对这2个文件中的url进行去重。这里提供3种解题思路: (1)把文件A切割成k 个...
初雪之音 发布于 3天前 阅读 23

如何通过solc编译solidity编写的以太坊智能合约

# solc:solidity的编译器 solidity编写的以太坊智能合约可通过命令行编译工具solc来进行编译,成为以太坊虚拟机中的代码。solc编译后最终部署到链上形成我们所见到的各种智能合约。 作为一个solidity命令行编译工具,我们来看看官网都怎么说solc。 solc的安装很简单: ``` npm install -g solc //或者 npm install -g solc-cli //或者 sudo apt-get install solc ``` 安装完成后我们来看,```solc --help```,solc --help命令显示所有的solc命令选项。编译器可以生成各种输出,比如最终的二进制合约文件、语法树的汇编或者需要预计的要花费的gas等。```solc --bin sourceFile.sol```,可以编译后输出一个名为sourceFile.sol的智能合约文件。如果你想从```solc```获得更丰富的一些输出变量,你可以使用```solc -o outputDirectory --bin --ast --asm sourceFile.sol```。 你在部署[以太坊智能合约](http://xc.hubwiz.com/course/5a952991adb3847553d205d1)之前可以用```solc --optimize --bin sourceFile.sol```优化一下。默认情况下solc编译器会帮你优化200次。你也可以设置 ```--runs=1```,这样就按照最小化的方式进行编译,如果你希望多次交易不太在乎成本,那你可以设...
笔阁 发布于 4天前 阅读 188 评论 1 点赞 1

PBFT共识算法详细分析及Java实现

# PBFT共识算法详细分析及Java实现 ## 为什么写这个 最近研究了区块链相关的一些东西,其实就三大块: 1. 分布式存储(去中心) 2. 共识机制 3. 安全加密 分布式存储,就是一个分布式数据库,每个节点都保存一份副本。通过非对称秘钥,hash等技术对操作数据进行签名,验证摘要,可追溯,以链式结构存储,互相以hash摘要校验数据,防篡改。以拜占庭容错共识算法解决节点间的通信,达成一致协议。 ### 区块链协议简介 分布式共识算法是分布式系统的核心,常见的有Paxos、pbft、bft、raft、pow等。区块链中常见的是POW、POS、DPOS、pbft等。 其中: - POW、POS、DPOS是开放式的共识协议 - PBFT为半开放式的共识协议 - Paxos、raft等是封闭式共识协议 区别: - 开放式,无法确切的知道节点的多少及连接状态,每个节点都可能是恶意的,但是大多数是非恶意的 - 半开放式,可以确定节点的多少及连接状态,每个节点都可能是恶意的,但是有满足一定条件的非恶意节点 - 封闭式,每个节点都是非恶意的,只不过可能断开连接或crash。 性能: 从上往下越来越高 总结: - 私有链是封闭生态的存储系统,采用Paxos、raft最佳 - 联盟链有半公开半开放特性,因此拜占庭容错的PBFT算法比较合适...
andylo25 发布于 5天前 阅读 8

使用truffle部署以太坊智能合约到区块链

truffle是以太坊(ethereum)开发智能合约(smart contract)过程中最受欢迎的框架,本教程来安装构建一个基本的Truffle项目并部署一个智能合约到区块链。 开始本文之前希望你已经了解区块链、以太坊、智能合约等基本概念。 # 安装 Truffle 安装 Truffle 框架非常的简单,只需要一行命令: ``` npm install -g truffle ``` 当然前提是你已经安装好了NodeJS并且版本要在5.0以上。 Tunffle还要求一个运行的以太坊客户端,以便支持标准的JSON RPC API,有很多的选择比如Ganache、geth。 # 构建一个Truffle项目 要使用大量的Tunffle命令,我们通过使用一个现成的Tunffle项目来学习。第一步是创建一个Truffle项目。 我们可以创建一个空的项目模板,不过刚开始构建项目,我们可以使用[Tunffle Boxs](http://truffleframework.com/boxes),里面有很多的示例应用程序和项目模板。本文使用[MetaCoin box](http://truffleframework.com/boxes/metacoin),它创建一个可以在帐户之间传输代币的应用程序示例。 1.为构建Truffle项目创建新目录: ``` mkdir MetaCoin cd MetaCoin ``` 2.下载 MetaCoin box,使用`truffle unbox `来下载各种示例,如果要建一个空的不包括智能合约的项目可以使用...
笔阁 发布于 5天前 阅读 225 点赞 1

万向区块链肖风:法定数字货币猜想

来源:本文首刊于第528期《财经》杂志,编辑:陆玲 作者:万向控股有限公司副董事长兼执行董事,万向区块链董事长兼总经理肖风    猜想者,不着调的狂想也! “数字经济”,逐渐成为了热词。什么是数字经济?数字经济诞生在数字世界,依据数学算法来运行。数字经济不能等同于互联网经济,也不是“互联网+”那么简单。我非常认同中国科学院王飞跃研究员的观点:数字世界与物理世界是一种平行世界的关系,它是物理世界的映射,它们是一对孪生体。由此可见,数字经济与工业经济也是一种映射关系,数字经济与工业经济也应该是一种平行关系,它有自己独特的、与我们所熟悉的工业经济完全不同的新规则。 底层技术 数字经济的运行规则是算法规则。其实不管是人工智能还是区块链,驱动它们的核心其实是各种算法,只不过一个是AI算法,另一个是密码学算法而已。而要让算法高效运行,就必须把它工程化为计算机代码。在一个以“代码”为通用语言的数字经济世界里,经济交易也代码化、自动化、智能化了。代码化的经济交易,需要代码化的记账方法,代码化的记账方法需要代码化的账户体系,代码化的账户体系需要代码化的货币。 2009年比特币区块链的诞生,恰逢其时地给我们送来了分布式...
万向区块链 发布于 5天前 阅读 6

基于区块链的知识共享框架-Aletheia

Aletheia: blockchain for scientific knowledge with a community management framework https://github.com/aletheia-foundation/aletheia-whitepaper/blob/master/WHITE-PAPER.md By Kade Morton and the Aletheia Community kademorton@protonmail.com contact@aletheia-foundation.io Table of Contents Introduction Why is Aletheia important? A blockchain journal The problems with the prestige system A new reputation ecosystem A peer to peer journal A community journal Submitting documents to Aletheia Thresholds Storage in Aletheia Voting reputation Acceptance into Aletheia Peer review Short List peer review Entire Pool peer review Anonymity Rounds of peer review Cryptographic Control The content of Aletheia Creative Commons Licenses Removing non-academic content Assessing takedown orders Complying with takedown orders Access and identity management The incentivised seeding problem Community What reputation will be scored on Revenue model Smart contracts Smart contracts for Aletheia's governance Smar...
openthings 发布于 5天前 阅读 24

【4】安装组件--启动fabric

您可以使用一组脚本来控制运行时间,~/fabric-dev-servers如果您遵循了建议的默认值,那么您将在其中找到这些脚本。 第一次启动一个新的运行时,您需要运行启动脚本,然后生成一个PeerAdmin卡: 复制 cd ~/fabric-dev-servers ./startFabric.sh ./createPeerAdminCard.sh 您可以使用启动和停止运行时~/fabric-dev-servers/stopFabric.sh,然后再次启动它~/fabric-dev-servers/startFabric.sh。 在开发阶段结束时,你运行~/fabric-dev-servers/stopFabric.sh然后~/fabric-dev-servers/teardownFabric.sh。请注意,如果您已经运行了拆卸脚本,那么下次启动运行时,就需要像第一次启动时那样创建一个新的PeerAdmin卡。 本地运行时旨在频繁启动,停止和拆除,以供开发使用。如果您正在寻找具有更持久状态的运行时,则需要在开发环境外部运行一个运行时环境,并将业务网络部署到该环境。这方面的例子包括通过Kubernetes运行它,或者在诸如IBM Cloud之类的托管平台上运行它。 启动网络应用程序(“Playground”) 要启动Web应用程序,请运行: 复制 composer-playground 它通常会自动打开您的浏览器,地址如下:http:// localhost:8080 / login 您应该在Web应用程序的“我的商业...
做龙龙 发布于 6天前 阅读 2

【4】安装组件--(2)安装Hyperledger Fabric

步骤4:安装超级结构结构 此步骤为您提供本地Hyperledger Fabric运行时来部署您的业务网络。 在您选择的目录中(我们将假设~/fabric-dev-servers),获取.tar.gz包含安装Hyperledger Fabric的工具的文件: 复制 mkdir ~/fabric-dev-servers && cd ~/fabric-dev-servers curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz tar -xvf fabric-dev-servers.tar.gz zip如果您愿意,也可以使用A :只需使用上面的代码片段中的命令替换.tar.gz文件fabric-dev-servers.zip并tar -xvf使用该unzip命令即可。 使用刚刚下载并解压缩的脚本下载本地Hyperledger Fabric运行时: 复制 cd ~/fabric-dev-servers ./downloadFabric.sh 恭喜,您现在已经安装了典型开发环境所需的一切。请继续阅读以了解您在此环境中开展并测试区块链商业网络时最常见的一些事情。...
做龙龙 发布于 6天前 阅读 1

【4】安装组件--(1)playground

如果您已经在线尝试了Composer,则会看到浏览器应用程序“Playground”。您也可以在您的开发机器上本地运行此功能,为您提供查看和演示业务网络的用户界面。 用于简单编辑和测试的浏览器应用商业网络: 复制 npm install -g composer-playground
做龙龙 发布于 6天前 阅读 1

【3】安装组件--(1)基本的CLI工具

第1步:安装CLI工具 Composer开发人员有几个有用的CLI工具。最重要的是composer-cli,它包含了所有必要的操作,所以我们会先安装它。接下来,我们也会拿起generator-hyperledger-composer,composer-rest-server并Yeoman加上generator-hyperledger-composer。最后3个不是开发环境的核心部分,但如果您遵循教程或开发与您的商业网络交互的应用程序,它们将非常有用,因此我们现在会安装它们。 请注意,您不应该使用su或sudo为以下npm命令。 基本的CLI工具: 复制 npm install -g composer-cli 在您的计算机上运行REST服务器以将您的业务网络公开为RESTful API的实用程序: 复制 npm install -g composer-rest-server 生成应用程序资产的有用工具: 复制 npm install -g generator-hyperledger-composer Yeoman是一种产生应用程序的工具,它利用generator-hyperledger-composer:(后续生成angularjs应用会用到该工具) 复制 npm install -g yo...
做龙龙 发布于 6天前 阅读 2

【2】安装了必需的先决条件

接下来就是安装go、docker等动作。 或许可使用官方的命令 curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh chmod u+x prereqs-ubuntu.sh ./prereqs-ubuntu.sh 进行一步到位的安装
做龙龙 发布于 6天前

ETCgame再升级,焕然一新的界面,极尽舒适的体验!

ETCgame地址:www.etcgame.com 今天,ETCgame再升级,整个界面全面升级,以愉悦的白色为主打色,使人感到干净清晰,一目了然。 同时,为了大陆用户的体验,该版本起,平台可以无需翻墙直接浏览登录。 菜单方面,平台方将竞猜项目分为两大类——“世界杯”和“数字货币”,又将投注项目按照状态“预测中”、“已截止”和“已开奖”分开,方便大家调取查看。 那么游戏该怎么玩呢? 首先你得先有个存放ETC钱包(禁止直接使用交易所投注,否则就找不回了),然后从交易所中转入足够的ETC到钱包。 (下个版本将会支持用户从交易所直接打币到平台而无需钱包过渡。 准备工作完成后,就让我们来选择比如这场“俄罗斯vs沙特阿拉伯”做个示范。 戳开后,可以看见下注条款的界面,如果你第一次玩可以仔细看看,内容不再赘述,看完后点击同意即可。 之后,我们可以看到关于该场比赛的详细信息,比如比赛的时间、场所、双方的教练等。 玩法规则也有胜平负、让球、大小球,各个玩法的规则可以参考本次第二篇推送。 比如我选择胜平负玩法,更喜欢俄罗斯,那么我就押注俄罗斯,下方可以看到下注地址,把你钱包里的ETC转入该地址中即可,钱包转账流程可以参考《手把手教你怎么找回误转入imt...
lpy411 发布于 6天前 阅读 3

ETC核心技术团队CTO空降上海,引领高校区块链技术风潮

ETCDEV是以太经典的核心开发团队,也是个顶级又低调的“极客组织”。他们专注ETC核心项目开发,藏器于身。尤其,作为团队的技术领导者和建立者,Igor Artamonov更加敏行,讷言,自以太经典诞生之日就为其服务,却鲜少接受曝光。所以,由Igor主讲的6月4日上海交通大学和6月5日上海复旦大学的两场技术分享会显得弥足珍贵! 尼克?萨博早在1994年就已提出智能合约概念,但一直没有实现。而众所周知,自区块链技术风靡后,智能合约就得到广泛应用。并且,目前与区块链结合最普遍的使用案例之一就是智能合约。这是何因?区块链和智能合约存在哪些关联?以太经典拥有怎样的区块链、智能合约世界? 两场会上,Igor基于智能合约,对在座计算机、软件编程相关专业的学生们和一些区块链技术从业者、爱好者们进行了区块链技术阐述。 以下为Igor演讲现场内容整理: 讲台上做区块链技术分享的Igor Igor重新定义尼克?萨博的智能合约概念。并认为,执行智能合约无需任何中央服务器,因此你不用信任任何个人。 智能合约代码就是终极授权。 区块链是一串使用密码学方法的互相关联的数据块,每个数据块中都包含了网络中的交易信息,区块链网络中的节点验证其信息的有效性(防伪)和生成下一个区...
lpy411 发布于 6天前 阅读 1

以太坊经典正在吸引股票市场的机构投资者

今天早些时候,专注比特币和区块链交易的数字货币集团创始人兼首席执行官Barry Silbert透露,3.6%的以太坊经典(ETC)供应由以太坊经典投资信托基金基金拥有。   4月份,数字货币集团旗下子公司Grayscale投资公司在受监管的股票市场上发布以太坊经典投资信托基金,旨在为以太坊经典的专业交易者和机构投资者提供了一种安全稳健的投资方式。以太坊经典投资信托基金成立之前,Grayscale投资公司也发布了比特币投资信托基金,该信托基金帮助公共市场的投资者通过安全渠道投资比特币。   发布的时候,Silbert说:   我们对ETC感到非常兴奋,与以太坊(ETH)不同,ETC具有固定的供应和作为物联网的智能合同和微支付层的潜力。   从那时起,ETC在股票市场的需求一直在快速增长,五个月内,以太坊经典投资信托基金逐渐成为ETC市场的主要投资工具,持有价值超过5300万美元的ETC。   由于其具有固定货币供应的特点,与比特币相似,所以ETC吸引了广大的股票和公共市场投资者。在过去几年中,分析师们解释说,如果比特币2100万供应达到最大化,其价值可能会上涨到超过10万美元。虽然传统的以太坊网络具有通货膨胀的供应设计,以固定的速度生产更多的Ether,但ETC今年早些时候采用了比特币...
lpy411 发布于 6天前 阅读 1

以太坊经典价格跳涨25%追随Coinbase上市消息

  美国加密货币兑换商Coinbase 6月11日宣布,他们将在其平台上支持Ethereum Classic(ETC),之后价格跃升超过25%。 我们很高兴地宣布我们打算在接下来的几个月里为Etinum Classic(ETC)增加对Coinbase的支持。https://t.co/bUG4iLUr2J - Coinbase(@coinbase)2018年6月12日 在世界标准时间01:14,ETC的交易价格为12.89美元,但一小时后价格猛涨了25%,达到16.15美元。     以太经典在从24小时内Coinmarketcap 以太坊经典是2016年分叉的结果,当时反对以太坊(ETH)变化的开发者创造了阿尔特币。截至发稿时,这是市值为15.6亿美元的第18位最有价值的加密货币,交易价格为15.31美元 Coinbase目前提供四种不同资产的支持; 比特币(BTC),比特币现金(BCH),ETH和莱特币(LTC)。Per Coinbase的博客文章称,一旦技术整合的最后阶段完成,交易所将宣布启动日期,他们认为这需要几个月。根据博客文章: “现在将开始支持以太坊经典的工程工作(第4步)。作为此过程的一部分,客户可以期望看到面向公众的API和其他迹象表明该资产正在被添加。当我们进入技术集成的最后测试阶段时,我们预计在未来几个月内会发生,我们将通过我们的博客和Twitter(步骤5)公开宣布开始交...
lpy411 发布于 6天前

【hyperledger安装1】nvm

1、首先解决掉2步骤由于ubuntu自带node而产生问题 sudo ln -s /usr/bin/nodejs /usr/bin/node 2、在线安装 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash 3、执行完2之后,会提示重启客户端,或执行一下命令,nvm即可用 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion  
做龙龙 发布于 6天前 阅读 5 评论 3

Bitcoin.org更新删除了Coinbase、Bitpay、Blockchain三大巨头

昨天比特币官网Bitcoin.org进行了更新,以一个全新的面貌展示在我们面前。相比于之前我们熟悉的版本,这个版本在风格上更加简洁内容上更加详细,不过它也趁此将有些内容做了改动。 经过对比,首先我们会发现一个较大的变化。此次更新后的Bitcoin.org把Coinbase、Bitpay、Blockchain这几个企业从列表中去除了。我们都知道Coinbase是全球最大的加密数字货币交易所之一,也是美国最大的交易平台。Bitpay是世界上最大的比特币支付服务商。而Blockchain钱包则是全球规模最大的比特币在线钱包。这三大企业可以称之为加密数字货币行业的三大巨头。但是Bitcoin.org就是把这么赤裸裸的把它们从列表中删除了。 究其原因,Bitcoin.org的这一举动主要还是因为比特币现金。因为这三大企业都曾经表示要全力支持比特币现金,而且现在确实是通过各种方式来支持比特币现金。就拿Bitpay举例,先是在其Copay钱包中添加了对比特币现金的支持,之后则是为BitPay商家提供BCH支付服务,而且Bitpay的Visa卡也增加了BCH选项,最近BitPay在它们的POS移动程序中添加了对BCH的支持,使用Bitpay的零售商则可以通过Pos应用程序接收BCH的付款。 虽然这些企业因为比特币现金的优势转向支持BCH,但是它们依旧...
lpy411 发布于 6天前 阅读 4

价值为王,市场需要降温

从6月10日开始,整个数字货币市场行情再次转冷,一波瀑布至今还在继续。市值前十的主流币均有10%左右的跌幅,跌的更惨的如EOS甚至还有将近20%的暴跌,可以说这波暴跌损失惨重。 暴跌未必是坏事 当前币圈鱼龙混杂,项目质量良莠不齐,甚至有诸多山寨币传销币疯狂炒作概念,吸引资金入场,赚到钱的项目方对项目不管不顾,留下一地鸡毛,外界对于数字货币的负面印象也多源于此类情况。这种行为不仅仅是引起监管层和普通公众的强烈反感,在业内同样引起反对,因为他们的行为让整个行业备受外界质疑,诸多如比特币现金(BCH)这样专注于生态发展和技术更新的做实事的项目必然会受到影响。 比如之前的博鳌亚洲区块链论坛,组织者炒作热度邀请了我国前领导人扮演者致辞,对前领导人形象造成恶劣影响。这种公然消费伟人、有辱先烈形象的行为受到币圈的一致批评,同时也引起了监管层的反感。 此次暴跌将会让市场上用于炒作圈钱的项目遭到致命打击,山寨币上的资金将会重新流转到如比特币现金这样有价值的主流币中。不久前央视经济频道再谈区块链和数字货币,热度持续上升,可能未来将会吸引一大批资金入场,这就意味着用户只需要选择有价值的项目并持有,可能未来就可以享受到新资金...
lpy411 发布于 6天前 阅读 1

尚无数据

顶部