区块链
程序新视界
个人公众号【程序新视界】,一个硬技术,软实力同步提升的平台。《Spring Boo技术内幕:架构设计与实现原理》作者,《深入以太坊智能合约开发》联合作者之一。主要从事于三方支付行业。
展开
-
从零开始安装穿透式检索
1. 什么是穿透式检索1.1. 当前的检索传统的检索通过关键字搜索相关结果,并根据关联度进行排名,之后根据得到的结果中进行整理,获得最终结果,但最终结果并不能保证是需要的结果。1.2. 穿透式检索穿透式检索直接检索需要的数据,不需要人脑再次整理,可以参考Google OneBox的概念。穿透式检索因为其结果的精确,可以为大数据和人工智能提供准确的素材,进而帮助大数据和人工智能获得更加准确的结果。1.3. 为什么区块链需要穿透式检索区块链数据是严谨的业务数据,对业务数据的分析有利于业务的增强。当原创 2020-09-26 16:59:25 · 2096 阅读 · 0 评论 -
从零开始学习 JD Chain(二)- JD Chain 区块链浏览器
在上一篇“从零开始部署JD Chain”的文章中,我们已经搭建好了JD Chain的区块链使用环境。本篇将对JD Chain区块链浏览器(下简称:区块链浏览器)进行全面的介绍,方便用户通过区块链浏览器来直观的查看JD Chain的整体情况。本文提及的搜索,都依赖于数据检索服务。数据检索服务可以根据相关地址和公钥的部分信息来进行模糊查询。如果用户需要查看搜索的效果,需要事先搭建数据检索服务,具体可参见:http://ledger.jd.com/argus.html。1. 区块链浏览器介绍1.1. 首页转载 2020-08-31 17:17:49 · 1231 阅读 · 1 评论 -
从零开始学习 JD CHAIN(一)- 快速部署 JD CHAIN
此文章系列计划记录本人从零开始学习JD Chain的历程,因为是从零开始,理所当然会有许多理解不够深入的地方,还望各位同好及时指正错误,共同成长。不定期更新,但尽量坚持下去,分享文章也是想立个Flag,让大家监督我的学习进度。JD Chain 是京东区块链开发团队自主研发的,专门为企业应用设计的区块链框架系统,适用多种通用业务场景。不同于超级账本(Hyperledger Fabric)生态和企业级以太坊联盟(Enterprise Ethereum Alliance,EEA),JD Chain 拥有完全的自转载 2020-08-25 14:32:07 · 1395 阅读 · 0 评论 -
Solidity如何通过代码减少gas消耗
我们知道,在以太坊上的交易gas是有上限的,因此也是比较昂贵的,特别是针对一些复杂业务的处理,随着业务数据的增长,有可能会导致gas超高,甚至业务无法进行操作。之前专门写过文章来描述如何减少gas的细节内容,这里再为大家讲解一种通过代码中memory来大幅度减少gas使用。首先先看下面示例代码:pragma solidity ^0.5.10;contract Test{ ...原创 2020-02-18 09:40:55 · 2321 阅读 · 0 评论 -
solidity中transfer异常"send" and "transfer" are only available for objects of type address
在solidity只能合约中,正常情况下我们可以使用transfer方法来进行转账操作,具体使用如下:msg.sender.transfer(_value);这样,就可以将指定的金额转到msg.sender的账户内。但是,还有一些情况时,ETH的接收者并不是msg.sender。那么该如何处理呢?使用下面这一种方式?function transfer(address _to, uint25...原创 2020-01-16 16:53:01 · 4790 阅读 · 1 评论 -
区块链需要迈过的几道坎
从我的理解而言,区块链是一种“共识”实现技术,通过区块链可以记录网际间所有的交易,供区块链的用户见证实现“共识”,且链上信息内容“不可篡改”。而这种“不可篡改”性是通过系统内多个副本的存在增加了内容被恶意篡改的成本。以比特币系统而言,下图中的所有亮点代表一套内容一致的账本。因此,当所有的记录得到公示,就解决了现实生活中的“两表不可测”问题。两表不可测的原因是没有中心,两表数值各异观者无从可知。但中心转载 2016-11-03 19:16:34 · 2676 阅读 · 0 评论 -
区块链开发(二)以太坊客户端基本操作命令
上一篇博客讲述了怎样搭建私有链服务,并成功启动服务。那么这篇博客来讲一下服务器启动之后,通过命令行进行的一些操作。启动命令重复上篇博客步骤,先将区块链客户端启动,命令如下:geth --identity "secbro etherum" --rpc --rpccorsdomain "*" --datadir "/home/zhuzs/eth/chain" --port "30303" --rpcap原创 2016-11-07 22:41:09 · 23887 阅读 · 5 评论 -
区块链开发(四)Nodejs下载&安装
以太坊框架truffle的使用需要依赖nodejs,这一篇博客我们就简单介绍一下node介绍的安装过程。此安装基于ubuntu 16.04版本。下载地址nodejs官网:http://www.nodejs.org/ 选择下图选中版本下载,也可以查看连接之后使用wget命令下载。 由于网络原因,可采用https://npm.taobao.org/镜像安装。 本教程下载版本为:node-v6.原创 2016-11-11 08:24:38 · 7402 阅读 · 5 评论 -
区块链开发(三)以太坊客户端命令行选项汇总
本篇博客的内容可通过以下命令在客户端中进行查看:geth --help也可以访问github上的wiki文档查看,地址为:https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options具体内容NAME: geth - go-ethereum命令行接口USAGE: geth [options] command [comma原创 2016-11-09 10:22:38 · 11852 阅读 · 0 评论 -
区块链开发(七)truffle使用入门汇总
截止上篇博客,以太坊区块链开发的环境和框架基本上搭建完毕。这一篇博客重点梳理一下基本的流程和操作演示。前奏基于前面的安装配置,现在重新梳理一遍,以前博客讲到的就在这里一笔带过。 (1)创建一个工作空间的目录; (2)进入目录,执行truffleinit命令,初始化demo;(3)编译项目 truffle init命令,初始化demo; (3)编译项目 truffle compile; (3原创 2016-11-14 21:12:45 · 9140 阅读 · 3 评论 -
区块链开发(八)以太坊不同语言客户端地址
目前以太坊客户端支持8种语言的客户端,这篇博客就简单介绍一下每个客户端的编程语言及客户端地址。go-ethereum语言:Go预言 简介:官方推荐,开发使用最多 地址:https://github.com/ethereum/go-ethereumcpp-ethereum语言:C++ 地址:https://github.com/ethereum/cpp-ethereumpyethapp语言:py原创 2016-11-22 19:50:49 · 4869 阅读 · 1 评论 -
以太坊go-ethereum客户端查询交易列表(二)
玩过比特币的朋友都知道,比特币是可以通过api(listtransactions)查询指定地址的历史交易的。但在eth中没有提供类似的查询api。今天这篇博客就简单介绍一下如果解决这个问题。问题以太坊go-ethereum客户端是没有根据地址查询交易列表的API的。然而,在使用过程中我们往往会用到类似的API。针对是否要在客户端上添加此API,github已经有激励的讨论了。点击一下网址可以了解一下原创 2017-01-02 08:22:28 · 28008 阅读 · 4 评论 -
以太坊go-ethereum客户端docker安装(一)
最近一段时间忙于工作,就没来得及发表博客,但一直没有停止对区块链的研究。周末抽时间分享一下近期比较重大的收获之一——使用docker来搭建和使用以太坊的节点。本人已经顺利搭建出,开发环境,测试环境,Full node环境。后续会逐个以博客的形式分析出来,希望大家多多关注,共同探讨进步。环境第一次尝试是在云服务器的centos 6.5上面安装。由于docker要求centos必须6以上,而且kerne原创 2016-12-24 21:37:27 · 10280 阅读 · 0 评论 -
以太坊go-ethereum项目源码本地环境搭建
如果要深入了解go-ethereum项目的实现与机制,看源代码是必不可少的。今天这篇博客就简单介绍一下如何在本地搭建项目的开发环境。GO语言环境搭建以win8为例,访问地址https://golang.org/dl/,下载windows版本。直接执行安装,默认会安装到C:\Go目录下,将 c:\Go\bin 目录添加到 PATH 环境变量中。 执行命令,验证安装配置成功:C:\Users\Admi原创 2017-01-04 11:02:11 · 30567 阅读 · 1 评论 -
以太坊go-ethereum客户端(三)两种全节点启动模式
这篇博客介绍一下go-ethereum全节点的两种启动模式:主网络快速启动和测试网络快速启动。这也是客户端所提供的两种启动方式,直接拿来使用即可。下面具体介绍一下使用方法。主网络快速启动其实,我们大多数人再使用节点的时候并不关系之前的历史数据。我们启动一个节点只是为了创建账户、交易资金、部署合约及与合约进行交互。在这种情况下,geth客户端提供了快速同步启动方式,命令如下:$ geth --fast原创 2016-12-27 23:00:37 · 19555 阅读 · 0 评论 -
区块链开发(五)git、truffle安装
truffle是以太坊最受欢迎的一个开发框架,本篇博客介绍truffle的下载安装过程。git安装在安装truffle之前需要核实一下本机是否安装git程序。后面的程序安装需要依赖git。 输入以下命令:$ sudo add-apt-repository ppa:git-core/ppa$ sudo apt-get update$ sudo apt-get install git安装过程中如果出现原创 2016-11-13 12:17:15 · 9259 阅读 · 6 评论 -
以太坊go-ethereum常见问题汇总
(1)什么是 Ethereum?以太坊是一个分散的智能合同平台,由Ether的加密货币提供支持。(2) 听说过以太坊,但什么是Geth,Mist,Ethminer,Mix?Geth: 以太坊节点的Go实现,是与以太坊区块链任何交互的基础。Mist: 相当于一个web浏览器,只不过是针对以太坊平台。 它用作GUI来显示与之交互的帐户和合约。 它还允许在图形用户界面中创建和交互合同,而无需使用命令行。翻译 2017-01-07 10:34:49 · 16606 阅读 · 0 评论 -
区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
通过各方资料了解学习之后,决定自己开始搭建基于以太坊go-ethereum的私有链环境。由于本人的电脑系统为win8,为避免window环境出现过多莫名其妙的问题,特意通过vm搭建了一台ubuntu16.04版本的虚拟系统。以下内容均基于ubuntu16.04系统。go-ethereum客户端下载地址&参考手册首先,可以查看一下go-ethereum项目在git上的地址: https://gith原创 2016-11-07 11:38:18 · 29791 阅读 · 11 评论 -
区块链开发进阶方向
周末抽时间总结了一些目前区块链开发的几个技术方向,绘制成一个思维导图,给大家分享一下。其中每个方向都有特有的学习细节及技术底层实现,大家慢慢的探索、丰富完善。原创 2017-01-08 08:19:32 · 3889 阅读 · 3 评论 -
以太坊go-ethereum客户端JSON-RPC API调用(一)
前几篇博客主要介绍了go-ethereum客户端不同环境的搭建,今天这篇博客是建立在前几排博客的基础上。当搭建完成之后,我们可以通过各种方式与节点进行交互(JavaScript Console、JSON-RPC 、web3等)。本篇以创建一个账户为例,介绍一下java调用JSON-RPC的方法及过程中可能会遇到的问题。准备当你准备使用不同的api接口时,在启动节点时要添加上不同的参数,比如你要使用r原创 2016-12-31 09:13:02 · 34089 阅读 · 42 评论 -
区块链开发(六)truffle使用入门和testrpc安装
在上篇博文中我们已经成功安装了truffle及所需相关环境,此篇就简单介绍一些truffle的使用及目录结构等。项目初始化创建一个目录,并在目录下面新建项目:$ mkdir truffleProject$ cd truffleProject/$ truffle init执行以上命令之后,truffle会默认生成一个MetaCoin的demo。现在我们就来了解一下truffle的架构。 文件目录原创 2016-11-14 08:36:58 · 19141 阅读 · 3 评论 -
区块链重塑经济与世界
今天给大家介绍一本刚刚读过的书,不做推荐,只谈对此书不同章节的个人读后感。在介绍之前,分享一下自己在读书过程中领悟到的一件事:如果真的喜欢一本书,或想研究一方面的知识,或爱好读书,那就买书吧。比起几十块钱一本书的成本价,读完之后的收获会远超通过其他方式获取同样的知识所耗费的成本。无论去网络上搜索的零星资料所花费的时间、或去拜访高人所花费的精力,一套内容系统、精心编纂的数据都值得你拥有,无需犹豫。《区原创 2017-02-18 11:46:47 · 5924 阅读 · 1 评论 -
图解区块链:14张图看懂什么是“区块链技术”?
区块链技术最初源于解决“拜占庭将军”问题,金融科技的发展使得区块链技术有了更好的应用场景。它最显著的特征是去中心化,当然在应用中也存在一些技术和安全的挑战。欲知何为区块链?且看图示详解。 原文链接:http://mp.weixin.qq.com/s/U50r7nccV593uz5K6H-irw转载 2017-01-26 07:52:06 · 71200 阅读 · 4 评论 -
Merkle tree在区块链中的应用
上篇博文我们转载了一篇《Merkle Tree(默克尔树)算法解析》,那么大家是不是会有疑问,学习这个算法之后,我们改怎么去应用,区块链中又是如何应用的?今天这篇博客就以Merkle tree在区块链中的具体用法为例简单说明一下。要了解Merkle tree的使用,先要了解一下区块链中每个区块的数据结构,下面以比特币的数据结构为例说明。如下图,数据区块由区块头和区块体两部分组成: 从图中我们可以看原创 2017-01-22 21:06:09 · 11165 阅读 · 0 评论 -
Merkle Tree(默克尔树)算法解析
Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1]1、HashHash是一个把任意长度的数据映射成固定长度数据的函数[2]。例如,对于数据完整性校验,最简单的方法是对整个数据做Hash运算得到固定长度的Has转载 2017-01-20 17:52:14 · 119022 阅读 · 18 评论 -
以太坊钱包Ethereum Wallet C盘数据转移
交易数据存储存在的问题使用过Ethereum Wallet的朋友都会发现,当我们安装好并启动此钱包时,钱包会自动同步区块链上的数据到本地,那么它默认同步到了什么位置呢?如果你细心查找,会发现在C:\Users\Administrator\AppData\Roaming\Ethereum下面有对应的geth和keystore文件夹。对了,这就是默认存储数据和证书的文件夹。随着同步的进行,geth文件会原创 2017-08-28 16:49:28 · 20647 阅读 · 1 评论 -
以太坊rpc接口调用之nonce
背景我们在使用以太坊相关的json-rpc借口发送交易时,往往会出现这种现象:交易已经发送出去,也获得了交易的hash值。dev模式的geth也在正常挖矿,可是问题是交易却迟迟未被确认。会发生此种类型的接口如:eth_sendTransactioneth_sendRawTransaction那么是什么原因导致此问题呢?今天就带大家了解一些导致此问题的原因。问题追踪除了上面的表象问题,我们还可以进步原创 2017-09-14 09:18:18 · 8705 阅读 · 2 评论 -
以太坊实践经验之《eth.blockNumber结果为0》
问题场景在使用以太坊ETH的过程中遇到这样一个问题,就是通过rpc 控制台调用eth.blockNumber获得的返回结果为0。如果没有产生区块或没有同步到区块,查询结果为0并不奇怪,本身区块高度就是0。然而,在实践中发现,区块已经同步一部分之后,在某个时刻调用此节点返回的结果依旧是0。那么,这个问题的原因是什么呢?软件环境1.7版本的geth客户端, Linux操作系统 链接公有链原因分析在Get原创 2017-09-24 11:03:23 · 14389 阅读 · 3 评论 -
以太坊实战之《如何正确处理nonce》
问题概述以太坊系列(ETH&ETC)在发送交易有三个对应的RPC接口,分别是eth_sendTransaction、eth_sendRawTransaction和personal_sendTransaction。这三个接口发送(或构造发送内容时)都需要一个参数nonce。官方文档对此参数的解释是:整数类型,允许使用相同随机数覆盖自己发送的处于pending状态的交易。官网解释仅从官网的解释,我们无法原创 2017-09-25 07:55:42 · 15430 阅读 · 1 评论 -
《Drools7.0.0.Final规则引擎教程》番外实例篇——FactHandler使用案例
背景我们在使用以太坊相关的json-rpc借口发送交易时,往往会出现这种现象:交易已经发送出去,也获得了交易的hash值。dev模式的geth也在正常挖矿,可是问题是交易却迟迟未被确认。会发生此种类型的接口如:eth_sendTransactioneth_sendRawTransaction那么是什么原因导致此问题呢?今天就带大家了解一些导致此问题的原因。问题追踪除了上面的表象问题,我们还可以进步原创 2017-09-17 21:57:43 · 3778 阅读 · 3 评论 -
以太坊加速区块同步方法
以太坊加速区块同步方法无论是使用图形界面或geth客户端进行节点数据同步时都会是一个漫长的过程。中间还会因为链接其他节点失败导致迟迟无法同步数据,一直打印错误日志。 主要原因是国内节点数过少,外加国内网络的特殊限制。EthFans发起的星火节点计划,组织国内对以太坊项目感兴趣的组织和个人自愿运行超级节点,星火节点的信息将被打包到node(节点)文件中,让社区成员自由下载,连接到更多超级节点,加快同原创 2017-09-27 08:06:45 · 14444 阅读 · 3 评论 -
以太坊Geth几种同步模式
同步模式分类–fast Enable fast syncing through state downloads–light Enable light client mode–syncmode full在Geth1.6版本,–fast参数已经改为–syncmode=fast,当然–fast依旧有效。full模式也一样如此。Full同步步骤:获取区块的header获取区块的body从创始块开始校验没一个原创 2017-10-27 08:17:25 · 24101 阅读 · 0 评论 -
区块链Block创建时间
区块时间获取无论BTC系列的区块还是ETH系列的区块,区块创建的时间存储单位都是unix时间戳。单位是秒而不是毫秒,这是我们在使用时必须注意的,如果直接用它来创建时间是肯定是错误的。Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总原创 2017-10-12 23:01:39 · 5552 阅读 · 3 评论 -
以太坊重放攻击
引言以太坊硬分叉后出现了大量的“重放攻击”,有交易所声称丢了币,用户丢币的事更多。那到底什么是重放攻击呢?计算机术语里的“重放攻击”以太坊硬分叉后发生的“重放攻击”和传统计算机术语不是一回事。传统术语“重放攻击”:指的是身份欺诈。在维基百科上定义很清晰,如下, 假设Alice向Bob认证自己。Bob要求她提供密码作为身份信息。同时,Eve窃听两人的通讯,并记录密码。在Alice和Bob完成通讯后转载 2017-11-16 08:01:04 · 5042 阅读 · 2 评论 -
以太坊下载地址及相关文档
以太坊相关资料汇总最近不停的被问到关于以太坊一些资料的事情,比如官网文档,在何处下载,如何查看区块等问题,本篇文章将以太坊相关资料进行简单的汇总,方便大家查阅。官方下载地址官方地址:https://ethereum.github.io/go-ethereum/downloads/ 官方提供了Linux版本,Windows版本,Mac版本和源码编译的下载,甚至还有IOS和安卓版本的支持。 同时提供原创 2017-11-21 09:45:40 · 12011 阅读 · 0 评论 -
Error: No network specified. Cannot determine current network异常
在使用truffle migrate进行智能合约test环境发布时如果未配置正确会出现以下异常:$ truffle migrateError: No network specified. Cannot determine current network. at Object.detect (/usr/local/lib/node_modules/truffle/build/cli.bund原创 2017-12-09 20:44:54 · 6518 阅读 · 2 评论 -
solidity智能合约开发工具Atom及其插件安装
Atom简介Atom代码编辑器支持Windows、Mac、Linux三大桌面平台,完全免费,并且已经在 GitHub 上开放了全部的源代码。开发团队将Atom称为一个“为21世纪创造的可配置的编辑器”,它拥有非常精致细腻的界面,并且可配置项丰富,加上它提供了与 SublimeText上类似的 Package Control(包管理)功能,人们可以非常方便地安装和管理各种插件,并将 Atom原创 2017-12-11 08:25:42 · 5959 阅读 · 1 评论 -
以太坊中的账户、交易、Gas和区块Gas Limit等基本概念
本篇文章作为科普文章,汇总整理了以太坊中的账户、交易、Gas和区块Gas Limit等相关概念,以便大家在实践中更好的与具体业务相结合。什么是账户以太坊账户与我们所知的账户概念有一定相似之处,却又有很大的区别,更不同于比特币中UTXO。 账户分两类: - 外部拥有账户(EOA),也就是普通账户 - 合约账户普通账户所谓的普通账户就是我们存放以太币的账户,可以随意生原创 2018-01-12 12:07:01 · 31322 阅读 · 0 评论 -
以太坊实战-attach命令
在前面的实战教程中我们经常提到attach这个命令,今天就针对此命令做更深一步的介绍。官方对此参数的解释如下: attach Start an interactive JavaScript environment (connect to node)也就是说它是一个连接到节点的JavaScript环境的交互窗口。通过它我们可以使用相应的命令与节点进行交互。与之对照的就原创 2018-01-21 11:27:09 · 7596 阅读 · 0 评论 -
以太坊实战-再谈nonce使用陷阱
在《以太坊实战之如何正确处理nonce》一文中我们介绍了nonce的基本概念和使用方法。也提到了它能够覆盖之前交易的特异功能。但是那只是nonce的冰山一角。今天再给大家分享在热点账户下nonce会出现的问题。热点账户所谓的热点账户就是频繁被使用的账户,在以太坊中比如交易所的统一出币账户,在短时间内频繁发起交易的账户,均可被称作热点账户。replacement transact原创 2018-01-14 08:33:21 · 18394 阅读 · 3 评论