比特派钱包app官方版下载安装|区块链浏览器开发
怎样开发一个区块链浏览器 - 知乎
怎样开发一个区块链浏览器 - 知乎首发于区块链前端开发实战切换模式写文章登录/注册怎样开发一个区块链浏览器拍岸前端架构师一、什么是区块链浏览器区块链浏览器,顾名思义,就是一个可以浏览区块链上的信息的系统。比如,https://etherscan.io就是一个典型的代表。在其中,可以查询到区块信息、交易信息、账户信息,等等。它与我们常用的Chrome、Safari等网页浏览器的浏览器并不是一个意思。简单来讲,你可以把区块链浏览器理解为一系列可以运行在网页浏览器或者Native APP里的webview中的一系列网页。二、基本思路其实,开发这样的区块链浏览器并不难,但可能不少做去区块链的团队都有这样的需求,所以单独写一篇讲一下。为什么大家说可能不少团队都会有这样的需求呢?因为区块链有一个特点就是公开透明,那如果你链上的东西用户查看不了,如何体现公开透明呢?所以,其实区块链浏览器主要完成了让链上信息公开的目的,所有人都可以去查询。下面讲的主要是基于以太坊的区块链浏览器。实现上思路上主要有这么几点:(1)借助web3.js API访问链上的信息(2)对web3.js API获取到信息进行加工处理,衍生出一些web3.js API无法直接查询到的字段(3)利用中心化接口提供一些非链上的信息(4)利用轮询等方式反复地调用web3.js API,达成不断刷新最新区块和交易等数据的目的三、用vue-cli 3.x来初始化项目上一篇中笔者介绍了怎么初始化一个react Dapp项目。这里,再改用最新的vue-cli 3.x版本来初始化一个vue.js Dapp项目,以满足不同技术喜好的人的需求。```npm i -g @vue-clivue create blockchainbrowsernpm i web3 -Snpm i less less-loader```这样,项目基本架子就已经初始化好了。四、具体实现接着,在项目根目录下新建一个starthttp.sh文件,用来放置启动本地以太坊节点服务的命令:```geth --datadir "d:\privatechain" --networkid 23 --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" --rpcapi "db,eth,net,web3" console```这样,后面我们就可以通过`bash starthttp.sh`命令来启动节点服务了。然后,我们修改HelloWorld组件为Home组件,并把其内容改为:``` Blocks:
Transactions:
如何设计一款区块链浏览器? - 知乎
如何设计一款区块链浏览器? - 知乎首发于区块链切换模式写文章登录/注册如何设计一款区块链浏览器?区块科学摘要步入币圈大门后,除了钱包应用之外,用户最先接触的应该还有区块链浏览器。区块链浏览器不同于电脑和手机上浏览网页用的浏览器软件,而是指一个网站可以查询区块链上的具体信息。比如,给定区块高度,可以查询该高度区块的创建时间,包含了多少交易;给定一个地址,可以查询余额,该地址的所有交易记录等。当前以太坊上的数据量级已达亿级,如何进行数据持久化和查询呢?本文以以太坊为例,对区块链浏览器原理及存储细节进行分析总结。以太坊上的交易类型以太坊上 Native Token 交易,就是 ETH 交易,不过以太坊支持智能合约,开发者和机构可以在以太坊上创建合约并发行自己的通证,通过调用合约实现自己发行通证的转账,查询余额等。不同开发者可以分别为自己的合约编写不同的函数名来实现通证转移,那么问题来了,如果钱包类应用要兼容多家的通证,要分别知道他们是用了什么函数名,这么一来通用性较差。为了解决这个问题,以太坊社区制定了 ERC20 标准,该标准规范了通证合约的接口,比如,大家都要把合约转账的函数名编写为 transfer,如果转账成功要提交 transfer event,这么一来,钱包类应用只实现 ERC20 标准里规定的内容,就可以接入符合 ERC20 协议的通证了。从 Token 的角度来看,以太坊上有 ETH Token,以及基于合约实现的 ERC20 和其他标准的 Token。交易为 ETH 转账交易,ERC20等 Token 转账交易。从合约的角度来看,交易有创建合约和调用合约两种交易类型,其中 ERC20 转账交易是通过调用合约的转账函数实现的。数据源如果要解析区块数据,那么问题来了,我们从哪里获取区块数据呢?常见的方法有三种:RPC 接口:搭建全节点,通过调用全节点 RPC 接口获取区块和交易数据优点:开发复杂度低,区块解析器和全节点可以在不同机器上运行缺点:需要等待全节点更新区块完成后才可以获取数据,RPC 短链接密集 IO 操作时效率较低实现:搭建全节点,使用 RPC 接口获取数据P2P 协议:ETH 全节点之间通过规定好的 P2P 协议进行数据交互,因此可以实现 P2P 协议,直接从对等节点获取区块和交易数据优点:无需等待全节点同步数据,直接获取区块和交易信息缺点:获取数据相对复杂,因为要实现 P2P 协议实现:为了简化实现,可以在开源全节点的基础上增加数据解析入库逻辑本地数据:ETH golang 实现的全节点中,本地数据通过 leveldb 存储,可以直接解析 leveldb 数据优点:解析速度块,直接读取磁盘缺点:需要了解 ETH 具体存储规则,以及需要维护最长链实现:使用 leveldb 解析本地数据交易数据解析分析完交易类型和数据源之后,我们在这里使用 RPC 解析数据的方式,作为 MVP 实现,我们只解析以下交易类型:解析 ETH 交易解析 ERC20 Transfer 交易ERC20 合约直接调用ERC20 合约间接调用解析创建合约交易当全节点同步完成后,我们从第一个区块依次向后获取每个区块的信息,以及获取区块中的所有交易,对交易进行解析,解析完成的数据存入数据库中,用作查询使用。最长链选择区块链本身是个多叉树结构,之所以称为链是因为大家只认可从根节点到子节点最长的路径,以最长链上的块为主块,在区块链产生区块的过程中,会产生很多叔块,因此在解析的过程中要一直沿着最长链的方向进行解析,那么如何保证最长链呢?因为这里数据源依赖的是全节点 RPC 接口,全节点本身已经维护了最长链,因此,我们无需复杂的回溯逻辑,只需要对比已经解析高度为 h 的区块和全节点中高度为 h 的区块 hash 是否一致即可,如果一致证明本地解析的链为最长链,具体算法可描述为:区块分叉以全节点为准,同步时检测本地最新块高度 h 区块的 hash 和全节点高度为 h 的块 hash 是否一致,如果一致证明没有发生分叉,继续向后同步;如果不一致证明发生分叉,首先寻找分叉高度,然后进行回退。寻找分叉点过程:从本地区块当前高度前一个高度 h 和全节点 h 区块的 hash 进行比对,如果一致,证明分叉点为 fork height = h + 1,如果不一致,继续向前 h = h - 1,直到找到分叉点。回退过程:等待当前所有块解析完成后开始回退操作,删除 fork height 之后 block 的,及 block 中对应的交易。回退完成后,从 fork height 开始同步。数据持久化在说数据持久化之前,我们先来看看面对的是什么量级的数据,以及需要对数据的查询分析需求:数据量级:截止到目前,ETH 块高度近 1000 万,交易数量为 6.4 亿左右(ERC20 内部交易更多),各类 ERC20 合约 20 万左右,账户地址 1.3 亿左右数据使用:首先是写入数据需求:解析到交易后进行写入操作,需要考虑写入效率其次是查询需求:按照关键字段进行查询,如根据 from/to 地址进行交易查询;查询某个地址使用过的所有合约;查询某个合约的历史交易等最后是统计需求:统计某个地址的最最大最小 ETH 交易或某个 ERC20 合约交易;查询某个 ERC20 在最近一个月内前转账金额最大的前 100 笔交易等;某个地址在某个块高度时的 ETH/ERC20 余额等数据库选型常见的持久化数据库选择有以下类型:关系型数据库:家喻户晓的 MySQL,以及大兄弟 PostgreSQL 等非关系型数据库:常见的 LevelDB,RocksDB 等似关系非关系型数据库:MongoDB不是数据库:ElasticSearch接下来来分析一下上述数据库的优劣。MySQL图 1 聚簇索引 B+Tree 示意图以 MySQL 为代表的关系型数据库,对事务支持最好,其中 innoDB 引擎,采用的是 B+Tree 索引,有效减少了读取磁盘数据时 IO 次数,在数据表建立后,建立主键索引,数据实体存储在该索引的叶子节点上,如图 1 所示,主键查询数据时首先在主键索引树中查询数据所在叶节点,然后访问该位置读取数据;当查询非索引字段时进行全表扫描,当数据量大时,速度非常非常非常慢,当然,可以为查询字段建立索引,当查询多个字段时,可以建立联合索引,联合索引为非聚簇索引,查询到结果后需要回表,回表又需要在聚簇索引中进行一次查询,当数据量较小时,MySQL 的 B+Tree 索引树们看着是矮瘦的样子,查询速度较快;当数据量较大时,这些树全都变成了高胖大汉,查询效率自然降低。在早起的开源浏览器 Bitcoin ABE 中,便是使用的 MySQL,存储在单库单表中,不知道现在还能否使用。对于关系型数据库的存储结构设计,大致可以使用区块表存储所有区块信息,交易表存储所有交易,以查询某个地址所有交易为例,需要在交易表中查询 from 和 to 为该地址的交易。针对 MySQL 存储和查询当然也有解决方案,可以水平分库分表,比如区块表,交易表可以按照区块和交易 hash 取模进行分库分表;或者交易表可以按照不同的交易类型进行分库分表;查询时,分别从每个库或者每个表中查询数据,最后进行汇总。这么做说起来容易,可是分库分表对应用不透明,需要应用负责实现这些逻辑,实现起来有工作量。NoSQL非关系型数据库读写速度快,对事务支持没有 MySQL 那么优秀,在全节点中,BTC,ETH 等使用 LevelDB,CKB 等使用了 RocksDB。在节点解析中 Bitcore 使用了 MongoDB,BlockBook 使用了 RocksDB 。其中 MongoDB 支持分布式存储,LevelDB 与 RocksDB 则不支持分布式存储。对于 LevelDB 与 RocksDB 这种 K-V 型数据库而言,存储结构可以使用区块 hash 作为键值存储区头信息以及所有交易 hash;使用交易 hash 作为键值存储具体交易内容,使用地址作为 key 存储该地址相关的所有交易 hash;以查询某个地址所有交易为例,首先根据地址查询所有交易 hash,然后使用每个交易 hash 查询具体交易信息。MongoDB 虽然使用 K-V 格式存储,但是针对索引字段支持额外的 B-Tree 索引。使用 K-V 进行查询时,查询速度快,不像 MySQL 那样需要从 B+Tree 查询,可以使用 key 直接定位数据位置;但是短板也很明显,查询时需要将该 key 下所有数据加载到内存,如需分页等操作,实质上也是查询出所有数据,在内存中进行分页。当然也有可以想到的解决方案,针对地址 address 存储交易时,由于解析是按照时间顺序解析,存储格式可设定为 key = address + page1 进行存储固定 size 交易 hash,当超过该 size 是启用 key = address + page2 进行存储,这样查询时便可以进行分页查询,应用需要实现这个分片逻辑。ElasticSearch图 2 倒排索引示意图ElasticSearch 不支持事务,使用倒排索引,如图 2 所示,通过字典书管理 Term,每个 Term 下存储包含该 Term 的所有文档的 docId 。MySQL 为了减少磁盘 IO 和 Random Access 使用 B+Tree 组织数据,ElasticSearch 通过 Term Dictionary 分块减少 Random Access。为了防止多条件查询时查询出每个条件对应的 docId,然后利用 Skip List 进行 docId 集合合并,范围型查询使用 BKDTree 进行索引。天生支持横向扩容,数据可分布在从节点分片内,查询时主节点从多个从节点查询然后在内存中合并,这个过程由集群处理,对于应用程序来说是无感知的。而且支持设定 Index Lifecycle Policies,自动拆分 Index。这么来看,ElasticSearch 在区块链数据存储和查询的场景,整体来看内部支持横向分片,查询性能好,且内置了各种聚合功能,似乎综是个比较好的选择。在 EOS 历史数据解析中,Hyperion-History-API 项目选择了 Elasticsearch 作为存储。整体设计方案解析器设计在解析数据的过程中,包含区块数据读取解析和数据持久化写入的过程,整个解析器的瓶颈在于数据读取解析速度和数据写入速度。为了均衡二者,常见的方案是在数据读取解析和数据写入之间搭建缓冲管道,整体思路如下:数据读取解析:固定线程数进行数据读取解析,解析后结果存入 queue 中数据传输队列:queue 设定最大消息数阈值,防止 queue 无限增大占用过多资源数据写入:从 queue 中获取消息,使用固定线程数进行写入如何保证数据的完整性呢?当数据读取和数据写入出错时如何处理?数据读取失败队列:数据读取失败后加入到失败队列,数据读取时首先检查失败队列,并优先读取失败队列中任务数据写入失败:类似数据读取,可以单独使用个 queue,或者可以把失败的数据再送回数据读取解析后保存的数据传输队列中,也方便控制写入速率。解析器启动时首先检查完数据完整性,去除重复区块,解析缺少区块解析器如何优雅的退出(确保区块数据完整):停止数据读取任务添加,等待当前线程池内数据解析完毕消费数据传输队列中所有消息停止程序停止后保证区块连续和不缺少区块因为异常退出,或需要检查数据完整性:从最大高度开始寻找缺少或者重复的区块数据补足缺少数据和处理重复数据后从当前最大高度开始正常解析亿级数据如何快速查找缺少的高度和重复的高度?基于分而治之思想快速完整性检查:假设从高度 h 到 h - N 查询区块数量,如果数量等于 N,认定不缺少或不重复(解析过程中发现出现了 Elasticsearch 提交成功,也为报错,但是没有存储上的区块,未遇到重复区块)。在该假设的基础上,当全部区块数和最高区块数不匹配时,N 取 10万,从最大高度向下检查,当不满足查询的区块数等于 N 时,从 h 到 h - N / 2 和 h - N / 2 + 1 到 h - N进行二分区块数判断,当二分区间为 N / 8 时查询所有数据进行遍历。全量完整性检查:每次取 1 万高度,进行缺少重复判断。ElasticSearch 数据存储如何优雅的使用 ElasticSearch 进行数据存储?常见的使用 ElasticSearch 进行数据分析的方式是数据存储到关系型数据库中,然后从关系型数据库中同步到 ES 中。考虑到区块解析无需事务支持,仅包含写入操作(完整性检查和处理分叉时包含删除),可以直接将数据存储到 ES 中,参考 Hyperion-History-API 项目,可以进行以下设计:解析器启动时向 ES 中写入 Index Lifecycle PoliciesIndex Lifecycle Policies 中设定满足指定数据大小和时间后进行 rollover,避免分片过大造成查询效率降低针对所有 index 设定 Index Template,制定设置好的 Index Lifecycle Policies, 需要查询的字段设定为 keyword,无需查询的字段 disable index针对金额字段,为了数值准确,使用 keyword 保存精确值,使用 double 保存不精确值,保存数据类型方便后续 range 查询和聚合等数据通过 bulk API 批量写入,减少网络 IO 次数数据查询上,可以利用 ES 丰富的查询规则实现查询,以满足功能需求,具体细节不再赘述。同步过程解析器通过 RPC 获取数据时必须等全节点同步完成,否则在同步过程中可能面临全节点区块不连续,分叉等问题,同时大量查询请求也影响全节点同步区块数据的性能解析前 300 万区块耗时 6 小时左右,在 MVP 的设计中,数据传输队列以区块和区块内所有单位存储,解析器一个线程负责解析一个区块,此时解析器线程和数据传输队列可以设定大一些,此时由于前 300 万区块内交易较少,解析速度高于持久化写入速度,可以观察到数据传输队列接近队列最大值后续区块共耗时 50 个多小时,由于每个区块内交易明显增加,此时数据传输队列中缓存的区块数据经过观察一直为个位数,此时读取速度成为瓶颈,为了降低节点压力和减少 IO 耗时,此时解析器线程数设定小一点同步到最新区块后真的出现过不止一次分叉,经过上文中提到的分叉检查算法检查可解决分叉问题磁盘 IO 速度和 CPU 速度很重要共同步了 967 万区块头信息,6 亿 8 千万交易信息。图 3 解析的所有数据数据分析为了方便查询和展示,使用 Kibana 进行数据查询和可视化,后续根据需求通过 ES 丰富的查询功能制定相应接口即可。浏览区块数据可以根据高度和 hash 进行查询区块数据和对应的交易数据。区块文档数和高度一致,证明没有缺失区块和重复区块。图 4 区块数据浏览可以查询某个地址/合约指定日期内交易等。图 5 查询交易信息图 6 查询所有 USDT 交易交易分析我们记录 type 1 为 ETH 交易,type 2 为 ERC20 转账,type 3 为合约创建。五年来 3 种交易类型整体趋势如下如。图 7 整体交易趋势图 8 ETH 交易趋势图 9 ERC20 交易趋势图 10 以太坊合约创建趋势图 11 五年内三种交易类型占比可见链上 ERC20 交易已经基本与 ETH 交易一样多,下面是两年内三种交易类型占比,ERC20 转账数量已经超过 ETH 转账数量。图 12 两年内三种交易类型占比下图为两年内 ERC20 交易前十的 Token,USDT 稳坐第一。图 13 两年内前十交易量的 Token我们也可以查询某个地址拥有的所有 ERC20 Token 类型及交易数量,比如 0x6465349f1a53ba0097d9aac3f6ef293bdd10cae1 共拥有 71 种 ERC20 Token,合约地址如下。图 14 某地址拥有的所有 ERC20 种类3.12 日晚上发生了暴跌,我们来看下一周内的 ETH 大额转账趋势,3.12 19:00 出现了一笔 14 万 7 千的 ETH转账。图 15 ETH 大额转账趋势最近一周 USDT 大额额转账较多,其中 13 日交易 hash 为 0xd30eeca47682a2f35119c3a465e998b68cde1e94c317eee5851859cb6a6d1c44 进行了高达 7580 万的 USDT 转账。图 15 USDT 大额转账趋势基于链上全量交易数据,我们还可以做更多数据统计,篇幅限制,不再演示。总结本文以以太坊区块链为例,对如何设计一款区块链浏览器从数据来源,完整性检查,数据持久化等方面进行了分析,最后通过解析全量数据对交易进行了统计分析。对于比特币为代表的 UTXO 类型区块链数据解析,方法一致,存储结构进行相应改变即可。原创文章,转载请联系作者。编辑于 2020-03-15 01:40区块链(Blockchain)区块链技术赞同 302 条评论分享喜欢收藏申请转载文章被以下专栏收录区块链链链不忘,币
区块浏览器 | ethereum.org
器 | ethereum.org跳转至主要内容学习用法构建参与研究搜索语言 ZH帮助更新此页面本页面有新版本,但现在只有英文版。请帮助我们翻译最新版本。翻译页面没有错误!此页面未翻译,因此特意以英文显示。不再显示Change page概述基础主题以太坊简介以太币简介去中心化应用程序简介Web2 与 Web3 的对比帐户交易区块以太坊虚拟机 (EVM)操作码Gas费用节点和客户端运行节点客户端多样性节点即服务节点架构轻客户端归档节点引导节点网络共识机制工作量证明矿工挖矿算法Dagger-HashimotoEthash权益证明Gasper弱主观性认证权益证明机制的奖励和惩罚权益证明攻击与防御密钥权益证明与工作量证明提出区块权益正明常见问题以太坊堆栈堆栈简介智能合约智能合约语言智能合约结构智能合约库测试用智能合约编译智能合约部署智能合约验证智能合约升级智能合约智能合约安全性智能合约形式化验证可组合性开发网络开发框架以太坊客户端APIJavaScript API后端APIJSON-RPC数据和分析区块浏览器存储集成开发环境 (IDE)编程语言DartDelphi.NETGolangJavaJavaScriptPythonRubyRust语言高级链桥标准令牌标准ERC-20:同质化代币ERC-721:非同质化代币 (NFT)ERC-777ERC-1155ERC-4626最大可提取价值 (MEV)预言机缩放乐观卷叠零知识卷叠状态通道侧链以太坊 Plasma 扩容解决方案Validium数据可用性网络层网络地址门户网络数据结构与编码默克尔前缀树递归长度前缀编码 (RLP)简单序列化 (SSZ)Web3 密钥存储定义设计基础设计和用户体验简介区块浏览器a上次修改时间: @a8832021(opens in a new tab), Invalid DateTime查看贡献者在本页面前提条件服务数据执行数据燃料交易帐户代币网络共识层数据时段时隙区块验证者认证网络区块浏览器延伸阅读相关主题区块浏览器是你进入以太坊数据世界的大门。 你可以通过区块浏览器来查看实时的区块、交易、矿工、帐户以及其他的链上相关活动。前提条件你应该理解以太坊的基本概念,以便你能够理解区块浏览器向你展示的数据。 开始介绍以太坊。服务Etherscan(opens in a new tab) - 还支持中文、韩语、俄语和日语Beaconcha.in(opens in a new tab)Blockchair(opens in a new tab) - 还支持西班牙语、法语、意大利语、荷兰语、葡萄牙语、俄语、中文和波斯语Blockscout(opens in a new tab)Etherchain(opens in a new tab)Ethplorer(opens in a new tab) - 还支持中文、西班牙语、法语、土耳其语、俄语、韩语和越南语OKLink(opens in a new tab)Otterscan(opens in a new tab)Rantom(opens in a new tab)Sirato(opens in a new tab)EthVM(opens in a new tab)DexGuru 区块浏览器(opens in a new tab)数据以太坊从设计上是透明的,所有信息都可以验证。 区块浏览器为获取这些信息提供了一个界面。 这适用于以太坊的主网络和测试网,如果你需要这些数据的话。 数据被分为执行数据和共识数据。 执行数据指已在一个特定区块内执行的交易。 共识数据指区块本身以及提出它们的验证者们。以下是你可以从区块浏览器获得的数据类型概要。执行数据每隔 12 秒就会有新的区块被添加到以太坊(除非区块提议者错过了提议机会),因此有几近稳定的数据流被添加到区块浏览器中。 区块里面包含着许多你可能会觉得有用的重要数据:标准数据区块高度 – 区块编号以及创建当前区块时的区块链长度(以区块为单位)时间戳 - 区块提议的时间交易 – 区块中包含的交易数量交易费接收人 - 从交易中获取燃料费小费的地址区块奖励 - 奖励给提议该区块的验证者的以太币数额大小 - 区块内的数据大小(以字节为单位)消耗的燃料 – 区块中的交易消耗的燃料单位总数燃料限制 – 区块中的交易设置的总燃料限制燃料基础费 - 要将交易纳入区块所需的最小倍数燃烧的费用 - 在区块内被燃烧的以太币数量其它数据 – 任何由矿工加入区块的额外数据高级数据哈希 - 表示区块头的加密哈希(区块的唯一标识符)父哈希 - 当前区块的前一个区块的哈希状态根 – 存储整个系统状态的默克尔前缀树的根哈希。燃料区块浏览器不仅会为你提供有关交易和区块中的燃料使用量的数据,还会为你提供有关网络当前燃料价格的信息。 这将帮助你了解网络使用情况,提交安全的交易和避免燃料超支。 寻找可以帮助你将这些信息获取到你自己的产品界面的应用程序接口。 燃料特定的数据涵盖:安全但缓慢的交易所需的估计燃料单位数(以及估计的价格和持续时间)一般交易所需的估计燃料单位数(以及估计的价格和持续时间)快速交易所需的估计燃料单位数(以及估计的价格和持续时间)基于燃料价格的平均确认时间正在消耗燃料的合约 – 换句话说,正在网络上大量使用的流行产品正在消费燃料的帐户 – 换句话说,频繁使用网络的用户交易区块浏览器已成为人们跟踪交易进度的常用位置, 这是因为你可以获得的详细程度提供了额外的确定性。 交易数据包含:标准数据交易哈希 – 交易被提交时生成的哈希状态 – 指示交易是待处理、失败还是成功区块 – 包含该交易的区块时间戳 – 矿工开采交易的时间发送者 – 提交交易的帐户的地址接收者 – 与交易交互的接收者或智能合约的地址转移的代币 – 作为交易的一部分被转移的代币列表价值 – 被转移的全部以太币价值交易费用 – 支付给矿工处理交易的金额(根据燃料价格*使用的燃料计算)高级数据燃料限制 – 此交易可以消耗的最大燃料单位数消耗的燃料 – 交易消耗的实际燃料单位数量燃料价格 – 每燃料单位设定的价格随机数 – from 地址的交易号(请记住,它从 0 开始,所以随机数 100 实际上是该帐户提交的第 101 个交易输入数据 – 交易所需的任何额外信息帐户你可以访问关于帐户的很多数据。 这就是为什么建议使用多个帐户,这样你的资产和价值传输才不会轻易地被追踪。 还有一些解决方案正在开发之中,以使交易和帐户活动更加隐秘。 以下是帐户的可用数据:用户帐户帐户地址 - 你可以用来向其发送资金的公共地址以太币余额 - 与该帐户关联的以太币金额总以太币价值 - 以太币的价值代币 - 与帐户关联的代币及其价值交易历史 - 此帐户为发送者或接收者的所有交易的列表智能合约智能合约帐户拥有用户帐户将拥有的所有数据,但一些区块浏览器甚至还会显示一些代码信息。 示例包括:合约创建者 - 将合约部署到主网的地址创建交易 - 包括部署到主网的交易源代码 - 智能合约的 solidity 或 vyper 代码合约 ABI - 合约的应用程序二进制接口 — 合约发出的调用和接收到的数据合约创建代码 - 智能合约的编译字节码 — 在你编译使用 Solidity 或 Vyper 等编写的智能合约时创建合约事件 - 智能合约中调用的方法的历史 — 基本上是一种查看合约如何使用以及使用频率的方法代币代币是一种合约,因此它们将具有与智能合约相似的数据。 但是因为它们有价值并且可以交易,所以它们还有其他数据点:类型 - 遵循 ERC-20、ERC-721 还是其他代币标准价格 - 如果是 ERC-20 代币,则具有当前市场价值市值 - 如果是 ERC-20,则将有一个市值(根据价格*总供应量计算)总供应量 - 流通中的代币数量持有者 - 持有代币的地址数量转账 - 代币在帐户之间转移的次数交易历史 - 包括代币在内的所有交易的历史合约地址 - 部署到主网的代币的地址小数 - ERC-20 代币可分割并且有小数位网络一些区块数据更全面地关注以太坊的健康状况。总交易量 - 自以太坊创建以来的交易数量每秒交易数 - 每秒可处理的交易数以太币价格 - 1 个以太币的当前市场价以太币总供应量 - 流通中的以太币数量 — 请记住,新的以太币是随着每个区块的创建而以区块奖励的形式创建的市值 - 价格*供应量的计算结果共识层数据时段出于安全原因,在每个时段(每 6.4 分钟)结束时都会创建随机化验证者委员会。 时段数据包含:时段编号最终状态 - 时段是否已经完成(是/否)时间 - 时段结束的时间认证 - 时段中的认证数量(针对时隙内区块的投票)存款 - 时段内包含的以太币存款数量(验证者必须质押以太币才能成为验证者)罚没 - 对区块提议者或证明者的惩罚数量投票参与 - 用于证明区块的质押以太币数量验证者 - 该时段活跃的验证者数量平均验证者余额 - 活跃验证者的平均余额时隙 - 时段内包含的时隙数量(时隙包含一个有效区块)时隙时隙是创建区块的机会,每个时隙的可用数据包括:时段 - 时隙有效的时段时隙编号状态 - 时隙的状态(提议/缺失)时间 - 时隙的时间戳提议者 - 为该时隙提议区块的验证者区块根 - 信标区块的哈希树根父根 - 前一个区块的哈希状态根 - 信标状态的哈希树根签名Randao 揭示涂鸦 - 区块提议者可以在其区块提议中包含 32 个字节长的消息执行数据区块哈希存款计数存款根认证 – 该区块在此时隙中的认证数量存款 - 此时隙内的存款数量自愿退出 - 此时隙中退出的验证者数量罚没 - 对区块提议者或证明者的惩罚数量投票 - 在此时隙中为区块投票的验证者区块权益证明将时间划分为时隙和时段。 这意味着新的数据!提议者 - 经算法选择提议新区块的验证者。时段 - 提议区块的时段。时隙 - 提议区块的时隙。认证 - 时隙中包含的认证数量 — 认证同投票一样,表明区块已准备号进入信标链验证者验证者负责提议区块并在时隙中对区块进行证明。验证者编号 - 代表验证者的唯一编号当前余额 - 验证者包括奖励在内的余额有效余额 - 验证者用于质押的余额收入 - 验证者收到的奖励或惩罚状态 - 验证者当前是否在线和是否活跃认证有效性 - 将验证者的认证纳入链中的平均时间激活资格 - 验证者被激活用于验证的日期(和时段)活跃开始时间 - 验证者激活的日期(和时段)提议的区块 - 验证者提议的区块认证 - 验证者提供的认证存款 - 验证人质押存款的发送者地址、交易哈希、区块号、时间戳、金额和状态认证认证就像是投票“同意”将区块加入到链中。 它们的数据与认证记录和做证明的验证者有关。时隙 - 进行认证的时隙委员会索引 - 给定时隙的委员会索引聚合位 - 表示认证中所有参与验证者的聚合认证验证者 - 提供认证的验证者信标区块根 - 指向验证者正在证明的区块来源 - 指向最新的合理化时段目标 - 指向最新的时段边界签名网络共识层最高层数据包括以下内容:当前时段当前时隙活跃验证者 - 活跃验证者的数量待定验证者 - 等待激活的验证者数量质押的以太币 - 网络中质押的以太币金额平均余额 - 验证者的平均以太币余额区块浏览器Etherscan(opens in a new tab) - 可以用来获取以太坊主网和 Goerli 测试网数据的区块浏览器Beaconcha.in(opens in a new tab) - 用于以太坊主网和 Goerli 测试网的开源区块浏览器Blockchair(opens in a new tab) - 最具隐私保护性的以太坊浏览器。 也用于排序和过滤(内存池)数据Etherchain(opens in a new tab) - 以太坊主网的区块浏览器Ethplorer(opens in a new tab) - 专注于以太坊主网和 Kovan 测试网代币的区块浏览器Rantom(opens in a new tab) - 是一个好用的开源去中心化金融非同质化代币交易查看器,用于提供详细的交易信息。延伸阅读还有哪些社区资源对你有所帮助? 编辑本页面以添加!相关主题交易帐户网络back-to-top ↑本文对你有帮助吗?是否前一页数据和分析下一页存储编辑页面(opens in a new tab)在本页面前提条件服务数据执行数据燃料交易帐户代币网络共识层数据时段时隙区块验证者认证网络区块浏览器延伸阅读相关主题网站最后更新: 2024年2月16日(opens in a new tab)(opens in a new tab)(opens in a new tab)使用以太坊查找钱包获取以太币Dapps - 去中心化应用二层网络运行节点稳定币质押ETH学习学习中心什么是以太坊?什么是以太币 (ETH)?以太坊钱包Gas fees以太坊安全和预防欺诈措施什么是 Web3?智能合约以太坊能源消耗以太坊路线图以太坊改进提案 (Eip)以太坊的历史以太坊白皮书以太坊词汇表以太坊治理区块链桥零知识证明测试中心开发者开始体验相关文档教程通过编码来学习设置本地环境生态系统社区中心以太坊基金会以太坊基金会的博客(opens in a new tab)生态系统支持方案(opens in a new tab)以太坊漏洞悬赏计划生态系统资助计划以太坊品牌资产Devcon(opens in a new tab)企业级应用主网以太坊私密以太坊企业级应用关于ethereum.org关于我们工作机会参与贡献语言支持隐私政策使用条款缓存政策联系我们(opens in a new tBlockchair是一款通用区块链浏览器和搜索引擎
Blockchair是一款通用区块链浏览器和搜索引擎
浏览器
区块链
Aptos
Arbitrum One
Avalanche
Base
Beacon Chain
比特币
比特币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
第2层
Omni层
其他
价格
图表
节点浏览器
白皮書
广播交易
Testnet 浏览器
比特币现金
比特币现金
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
BNB
BOB
Botanix
艾达币
达世币
达世币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
DigiByte
狗狗币
狗狗币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
电子现金
电子现金
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
以太坊
以太坊
区块链
仪表盘
区块
叔块
交易
调用
内存池
交易
第2层
ERC-20
ERC-721 (NFT)
其他
价格
图表
广播交易
ENS Lookup
Ethereum Classic
Fantom
Gnosis Chain
闪电币
闪电币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
Handshake
KSM币
Linea
莱特币
莱特币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
门罗币
Moonbeam
opBNB
Optimism
Peercoin
波卡
Polygon
Polygon zkEVM
Rootstock
Sei EVM
Solana
恒星币
Telegram 开放网路
TRON
XRP Ledger
大零币
大零币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
稳定币
USDT
USDC
BUSD
Cross-chains explorers
Worldcoin
特色
数据
单一个API接口支持19个区块链
加入数以千计的加密公司、分析机构、学术机构的行列,他们正在使用 Blockchair 的 REST API 来获取数据并为他们的项目提供动力
数据库和全节点转储
将TSV文件放入您的数据库服务器即可开始您的分析。获取完整节点转储即可加快节点同步
图表
可视化区块链数据并比较跨区块链的趋势
ENS Lookup
Search Ethereum Name Service domain names
服务
匿名投资组合跟踪器
跟踪您的加密资产投资组合的表现 — 完全匿名
交易收据
为您或您的对手方获取PDF收据
Wallet statements
Get a report on your address holdings for any timeframe. Make your tax reporting and accounting less of a hassle.
Blockchair超棒
查找和比较超棒的区块链和加密产品和服务
新闻聚合器
了解60家最大的加密货币媒体的最新消息,11 种语言可用
Blockchair甜甜圈
捐赠超棒的非营利和开源项目,以帮助推广加密货币并减少纳税
比较区块链
按大小、手续费、每秒交易等来比较加密货币
更新监视器
跟踪即将到来的硬分叉和加密货币客户端的最新更新,例如 Bitcoin Core 和 Geth
广播交易
非公开地广播BTC、ETH、BCH、LTC、BSV、DOGE 和 GRS 的原始交易
减半倒计时
矿工、交易费和区块奖励
获取Blockchair拓展程序
Blockchair将17个区块链浏览器拓展到您的浏览器上
节点浏览器
了解节点可访问性、位置、共识等
CHIUSD
语言
CHI
语言
English
ENG
Español
SPA
Français
FRA
Italiano
ITA
Nederlands
DUT
Português
POR
Русский
RUS
中文
CHI
فارسی
PER
Вahasa Indonesia
IND
Türkçe
TUR
日本語
JPN
한국어
KOR
Deutsch
DEU
货币
USD
货币
Interface
日间模式
夜间模式
按系统偏好
Session
关闭3日广告
关闭JavaScript
本网站支持英语版,需要切换吗?
否
合作伙伴
伙伴关系
广告合作
开发人员使用
提交漏洞或请求
API说明
漏洞赏金计划
浏览器
特色
设置
其他
浏览器
区块链
Aptos
Arbitrum One
Avalanche
Base
Beacon Chain
比特币
比特币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
第2层
Omni层
其他
价格
图表
节点浏览器
白皮書
广播交易
Testnet 浏览器
比特币现金
比特币现金
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
BNB
BOB
Botanix
艾达币
达世币
达世币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
DigiByte
狗狗币
狗狗币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
电子现金
电子现金
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
以太坊
以太坊
区块链
仪表盘
区块
叔块
交易
调用
内存池
交易
第2层
ERC-20
ERC-721 (NFT)
其他
价格
图表
广播交易
ENS Lookup
Ethereum Classic
Fantom
Gnosis Chain
闪电币
闪电币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
Handshake
KSM币
Linea
莱特币
莱特币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
门罗币
Moonbeam
opBNB
Optimism
Peercoin
波卡
Polygon
Polygon zkEVM
Rootstock
Sei EVM
Solana
恒星币
Telegram 开放网路
TRON
XRP Ledger
大零币
大零币
区块链
仪表盘
区块
交易
输出
地址
内存池
交易
输出
其他
价格
图表
节点浏览器
广播交易
稳定币
USDT
USDC
BUSD
Cross-chains explorers
Worldcoin
特色
数据
单一个API接口支持19个区块链
加入数以千计的加密公司、分析机构、学术机构的行列,他们正在使用 Blockchair 的 REST API 来获取数据并为他们的项目提供动力
数据库和全节点转储
将TSV文件放入您的数据库服务器即可开始您的分析。获取完整节点转储即可加快节点同步
图表
可视化区块链数据并比较跨区块链的趋势
ENS Lookup
Search Ethereum Name Service domain names
服务
匿名投资组合跟踪器
跟踪您的加密资产投资组合的表现 — 完全匿名
交易收据
为您或您的对手方获取PDF收据
Wallet statements
Get a report on your address holdings for any timeframe. Make your tax reporting and accounting less of a hassle.
Blockchair超棒
查找和比较超棒的区块链和加密产品和服务
新闻聚合器
了解60家最大的加密货币媒体的最新消息,11 种语言可用
Blockchair甜甜圈
捐赠超棒的非营利和开源项目,以帮助推广加密货币并减少纳税
比较区块链
按大小、手续费、每秒交易等来比较加密货币
更新监视器
跟踪即将到来的硬分叉和加密货币客户端的最新更新,例如 Bitcoin Core 和 Geth
广播交易
非公开地广播BTC、ETH、BCH、LTC、BSV、DOGE 和 GRS 的原始交易
减半倒计时
矿工、交易费和区块奖励
获取Blockchair拓展程序
Blockchair将17个区块链浏览器拓展到您的浏览器上
节点浏览器
了解节点可访问性、位置、共识等
CHIUSD
语言
CHI
语言
English
ENG
Español
SPA
Français
FRA
Italiano
ITA
Nederlands
DUT
Português
POR
Русский
RUS
中文
CHI
فارسی
PER
Вahasa Indonesia
IND
Türkçe
TUR
日本語
JPN
한국어
KOR
Deutsch
DEU
货币
USD
货币
Interface
日间模式
夜间模式
按系统偏好
Session
关闭3日广告
关闭JavaScript
本网站支持英语版,需要切换吗?
否
合作伙伴
伙伴关系
广告合作
开发人员使用
提交漏洞或请求
API说明
漏洞赏金计划
浏览器
特色
设置
其他
区块链浏览器,分析和网页服务
Explore data stored on 40 blockchains
区块链搜索,现在浏览器中可用!
Chrome Extension
Check available extensions
搜索示例:
地址
区块
交易
嵌入性文本
探索区块链
Aptos
$13.32
2%
Arbitrum One
$2.23
7%
Avalanche
$43.45
1%
Base
$3,943.37
4%
Beacon Chain
$3,943.37
4%
比特币
$67,474.00
1%
区块
833,736
{{ Math.abs(change) }}%
交易
974,172,856
{{ Math.abs(change) }}%
最新区块
1分钟前
{{ Math.abs(change) }}%
每秒交易
1.73
{{ Math.abs(change) }}%
比特币现金
$433.54
5%
区块
836,061
{{ Math.abs(change) }}%
交易
386,074,773
{{ Math.abs(change) }}%
最新区块
1分钟前
{{ Math.abs(change) }}%
每秒交易
0.73
{{ Math.abs(change) }}%
BNB
$478.76
9%
BOB
$67,474.00
1%
Botanix
$67,474.00
1%
艾达币
$0.73
0%
达世币
$39.29
0%
DigiByte
$0.02
5%
狗狗币
$0.17
9%
区块
5,120,957
{{ Math.abs(change) }}%
交易
297,511,354
{{ Math.abs(change) }}%
最新区块
3分钟前
{{ Math.abs(change) }}%
每秒交易
17.02
{{ Math.abs(change) }}%
电子现金
$0.000067
6%
以太坊
$3,943.37
4%
区块
19,391,325
{{ Math.abs(change) }}%
交易
2,287,549,950
{{ Math.abs(change) }}%
最新区块
40秒前
{{ Math.abs(change) }}%
每秒交易
7.12
{{ Math.abs(change) }}%
Ethereum Classic
$38.62
4%
Fantom
$0.80
1%
Gnosis Chain
$1.00
0%
闪电币
$0.68
1%
Handshake
$0.03
10%
KSM币
$53.19
2%
Linea
$3,943.37
4%
莱特币
$87.59
2%
区块
2,646,384
{{ Math.abs(change) }}%
交易
231,868,309
{{ Math.abs(change) }}%
最新区块
2分钟前
{{ Math.abs(change) }}%
每秒交易
2.02
{{ Math.abs(change) }}%
门罗币
$147.93
3%
区块
3,100,560
{{ Math.abs(change) }}%
最新区块
3,100,559
{{ Math.abs(change) }}%
未确认交易
9,687
{{ Math.abs(change) }}%
哈希率
2.07
Gh/s
(RandomX)
{{ Math.abs(change) }}%
Moonbeam
$0.50
0%
opBNB
$478.76
9%
Optimism
$4.61
0%
Peercoin
波卡
$10.42
0%
Polygon
$1.15
2%
Polygon zkEVM
$1.15
2%
Rootstock
$67,474.00
1%
Sei EVM
$0.91
12%
Solana
$149.22
5%
恒星币
$0.14
3%
Telegram 开放网路
$2.75
2%
区块
42,354,872
{{ Math.abs(change) }}%
New events 24h
58,698
{{ Math.abs(change) }}%
最新区块
1秒前
{{ Math.abs(change) }}%
Events per second
0.68
{{ Math.abs(change) }}%
TRON
$0.14
1%
区块
59,755,422
{{ Math.abs(change) }}%
New events 24h
19,860,778
{{ Math.abs(change) }}%
最新区块
3秒前
{{ Math.abs(change) }}%
Events per second
229.87
{{ Math.abs(change) }}%
XRP Ledger
$0.63
1%
大零币
$34.12
1%
Layer 2 explorers
ERC-20代币
BNB
BNB
$478.76
Lido Staked Ether
STETH
$3,941.33
Shiba Inu
SHIB
$0.000035
Chainlink
LINK
$20.06
Uniswap
UNI
$14.96
Polygon
MATIC
$1.15
探索 ERC-20 代币
ERC-721 代币
MINER
MINER
Ore
ORE
Ghosties
GHOSTIES
DeFrogs
DEFROGS
Sheboshis
SHEB
MINER2.0
MINER2.0
探索ERC-721代币 (NFT)
Omni layer for Bitcoin
Tether explorer
USD Coin explorer
Binance USD explorer
比特币隐私计量表
了解是否您的交易是可追溯的而且会产生隐私风险在比特币网络上
获取Blockchair拓展程序
Blockchair将17个区块链浏览器拓展到您的浏览器上
我们开发产品让区块链数据能够被个人、开发团队、以及研究机构所使用
Blockchair 是第一个将多种不同的区块链整合到一个搜索引擎中的区块链浏览器。现在,我们正在努力使对区块链和加密货币感兴趣的广泛多样的受众可以理解并访问区块链数据,同时在开发产品时将维护和保护我们用户的隐私作为首要任务。
单一个API接口支持19个区块链
加入数以千计的加密公司、分析机构、学术机构的行列,他们正在使用 Blockchair 的 REST API 来获取数据并为他们的项目提供动力
对17 个区块链持续的数据洞察
使用我们类SQL的查询对数据进行排序和过滤
将来自60个加密媒体的新闻集成到您的应用程序中
探索API
数据库和全节点转储
将TSV文件放入您的数据库服务器即可开始您的分析。获取完整节点转储即可加快节点同步
图表
可视化区块链数据并比较跨区块链的趋势
区块链加密货币新闻
柴犬币价格预测:SHIB于24小时内上涨6% SHIB达到10美元可能吗?
SHIB今天健康上涨了6.5%,柴犬币价格达到0.00003358美元,而加密货币市场在过去24小时内上涨了2%。 这种著名的模因代币在过去一周上涨了156%,在过去30天内上涨了280%,受益于市场...
1小时前
{{ Math.abs(change) }}%
by cn.cryptonews.com
香港比特币概念股大涨30% 持有均价41,790美元比特币浮盈高达60.8
香港股市中的博雅互动(代号00434)近日表现亮眼,股价飙升超过30%,最新报价为1.73港元,交易额达到4184.31万港元。 这次股价上涨的背后是公司公布的优异年度业绩。 The post 香港比...
2小时前
{{ Math.abs(change) }}%
by cn.cryptonews.com
CoinDesk全球最具影响力Web3盛会Consensus 明年首次移师香港举行
CoinDesk宣布,其标志性活动“Consensus”计划于明年2月19日至20日在香港会议展览中心举办,作为一个全球性的活動,“Consensus”自2015年起便成为了数字资产、区块链技术和We...
5小时前
{{ Math.abs(change) }}%
by cn.cryptonews.com
更多新闻
通过Telegram订阅新闻
服务
匿名投资组合跟踪器
跟踪您的加密资产投资组合的表现 — 完全匿名
设置我的投资组合
交易收据
为您或您的对手方获取PDF收据
获取PDF收据
节点浏览器
了解节点可访问性、位置、共识等
节点浏览器
Blockchair超棒
查找和比较超棒的区块链和加密产品和服务
新闻聚合器
了解60家最大的加密货币媒体的最新消息,11 种语言可用
Blockchair甜甜圈
捐赠超棒的非营利和开源项目,以帮助推广加密货币并减少纳税
比较区块链
按大小、手续费、每秒交易等来比较加密货币
更新监视器
跟踪即将到来的硬分叉和加密货币客户端的最新更新,例如 Bitcoin Core 和 Geth
广播交易
非公开地广播BTC、ETH、BCH、LTC、BSV、DOGE 和 GRS 的原始交易
减半倒计时
矿工、交易费和区块奖励
获取Blockchair拓展程序
Blockchair将17个区块链浏览器拓展到您的浏览器上
ENS Lookup
Search Ethereum Name Service domain names
隐私是我们的重中之重
Blockchair是最隐私的区块链搜索引擎
与大多数区块链浏览器和加密货币公司不同,我们不会收集个人数据,也不会与第三方分析公司和广告网络共享这些数据。使用我们的服务时,您不会冒任何个人身份信息被公开或您的加密货币余额被泄露的风险
复制 Blockchair的 .onion洋葱链接
Onion v.3
我们的隐私政策
浏览器
Aptos
Arbitrum One
Avalanche
Base
Beacon Chain
比特币
比特币现金
BNB
BOB
Botanix
艾达币
达世币
DigiByte
狗狗币
电子现金
以太坊
Ethereum Classic
Fantom
Gnosis Chain
闪电币
USDT
USDC
BUSD
浏览器
Handshake
KSM币
Linea
莱特币
门罗币
Moonbeam
opBNB
Optimism
Peercoin
波卡
Polygon
Polygon zkEVM
Rootstock
Sei EVM
Solana
恒星币
Telegram 开放网路
TRON
XRP Ledger
大零币
数据
API
数据库转储
图表
ENS Lookup
新
服务
Blockchair新闻
Blockchair甜甜圈
Blockchair超棒
产品
交易收据
Wallet statements
投资组合跟踪
广播交易
隐私计量表
节点浏览器
更新监视器
减半倒计时
区块链对比
获取Blockchair拓展程序
更多信息
关于 Blockchair
常见问题
更新日志
加入我们
服务条款
隐私政策
Blockchair 洋葱v3链接
合作伙伴
伙伴关系
广告合作
Brand kit
开发人员使用
提交漏洞或请求
漏洞赏金计划
API说明
状态
社交平台
Telegram
GitHub
语言
English
Español
Français
Italiano
Nederlands
Português
Русский
中文
فارسی
Вahasa Indonesia
Türkçe
日本語
한국어
Deutsch
关于 Blockchair
常见问题
更新日志
加入我们
服务条款
© 2024 Blockchair
2.0.2-471-gc1825b068
[72]
Thu 29 Feb 2024 13:20:25 GMT –
[Blockchain_Ethereum] 从零开始开发区块链浏览器 - 简书
ckchain_Ethereum] 从零开始开发区块链浏览器 - 简书登录注册写文章首页下载APP会员IT技术[Blockchain_Ethereum] 从零开始开发区块链浏览器舒也ella关注赞赏支持[Blockchain_Ethereum] 从零开始开发区块链浏览器本篇使用React框架结合Web.j3从头开始一步步开发一个区块链浏览器。区块链浏览器通常用于查询区块信息、交易信息等。虽名为“浏览器”,但区块链浏览器与常用的Chrome、Safari等网页浏览器中的“浏览器”并不是一个意思,只是可以运行在网页浏览器或Native APP里Webview中的一系列网页。代码已开源至https://github.com/yangj96/blockchain-explorer
常见的面向公有链的区块链浏览器有:
比特大陆BTC
Blockchain.info
BlockChair
主要面向莱特币LTC ihashrate
很多常见的区块链浏览器同时也提供查询公有链区块、交易等信息的第三方API,可以很方便地调用开发。与上述面向公网的区块链浏览器不同,本文的目标是开发构建一个面向自己的私有链的区块链浏览器,因此我们开发前需要先搭建一条用于启动服务的以太坊私有链。当然,如果不想使用本地以太坊节点也可以安装MetaMask插件使用其提供的测试网络。
搭建私有链的步骤首先需安装Geth客户端,定义自己的创世区块的json配置文件,然后初始化区块链将创世区块信息写入到区块链中。私有链创建成功后就可以在终端启动自己的私有链节点并进行创建区块、查询账户余额、挖矿、发送交易、查询区块和查询交易等操作。此外,还可以搭建多节点的私有链,如果你已经熟悉上述操作和步骤,接下来我们开发针对自己私有链的区块链浏览器,如果还不熟悉上述过程,可以参考以太坊私有链搭建的相关内容进行学习。
初始化项目
首先通过Facebook发布的create-react-app脚手架工具来快速初始化一个React项目。在终端的项目存放路径下执行如下命令,如果在过程中出现网络问题,请尝试配置代理或使用其他 npm registry。
npm install -g create-react-app
create-react-app blockchain-explorer
如果命令执行成功,将看到如下提示:
Success! Created blockchain-explorer at /Users/jingy/blockchain-explorer
Inside that directory, you can run several commands:
npm start
Starts the development server.
npm run build
Bundles the app into static files for production.
npm test
Starts the test runner.
npm run eject
Removes this tool and copies build dependencies, configuration files
and scripts into the app directory. If you do this, you can’t go back!
We suggest that you begin by typing:
cd blockchain-explorer
npm start
Happy hacking!
其中包括项目运行、打包、测试的命令,值得注意的是最后一个命令npm run eject。它的作用是把项目打包所需要的配置文件弹(eject)出来,从而可以自定义修改这些配置文件。默认生成的项目中配置文件是被隐藏,默认项目目录结构如下:
├── README.md
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── manifest.json
├── src
│ ├── App.css
│ ├── App.js
│ ├── App.test.js
│ ├── index.css
│ ├── index.js
│ └── logo.svg
为便于后续更自由地对项目配置进行修改扩展,我们切换到新建的项目路径下执行npm run eject命令,该命令执行后不可恢复,项目目录结构变为:
├── README.md
├── package.json
├── config
│ ├── env.js
│ ├── paths.js
│ ├── webpack.config.dev.js
│ ├── webpack.config.prod.js
│ └── webpackDevServer.config.js
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── manifest.json
├── scripts
│ ├── build.js
│ ├── start.js
│ └── test.js
├── src
│ ├── App.css
│ ├── App.js
│ ├── App.test.js
│ ├── index.css
│ ├── index.js
│ └── logo.svg
其中,增加了两个文件夹:config和scripts,里面存放着打包相关的配置文件和流程控制文件。至此,项目的初始化工作完成,接下来我们一步步完善它。
完善项目配置
添加对antd的支持
项目开发中必然会需要用到各类组件,引入第三方组件库可以节约开发成本,因此这里添加蚂蚁金服团队所开发的antd组件库。如果选择其它组件库,也可以自行参照其官方文档引入。
首先在项目根目录安装antd npm install antd --save,但默认情况下项目运行时会加载全部的 antd 组件的样式,影响前端性能,因此使用 babel-plugin-import插件实现的组件代码和样式的按需加载。
安装 babel-plugin-import: npm install babel-plugin-import --save
在上述弹出的配置项文件中进行相应更改
在npm run eject弹出配置项后生成的config文件夹中包括dev模式和prod模式的配置文件,我们首先修改 webpack.config.dev.js,prod模式与dev模式的配置可采用同样的修改:
在webpack.config.dev.js文件的下列代码位置的plugins中:
// Process application JS with Babel.
// The preset includes JSX, Flow, and some ESnext features.
{
test: /\.(js|mjs|jsx|ts|tsx)$/,
include: paths.appSrc,
loader: require.resolve('babel-loader'),
options: {
customize: require.resolve(
'babel-preset-react-app/webpack-overrides'
),
plugins: [
[
require.resolve('babel-plugin-named-asset-import'),
{
loaderMap: {
svg: {
ReactComponent: '@svgr/webpack?-prettier,-svgo![path]',
},
},
},
],
],
添加以下代码
plugins: [
['import', {
libraryName: 'antd',
style: 'css'
}]
]
路由配置
路由配置使用react-router完成。实际上根据react-router的最新版本的重构更新,路由同样变为React的组件,从而能够在组件渲染时进行路由的动态映射,已不再需要所谓的路由配置。但由于react-router版本从v3到v4的更新不只是简单的API改变,而是整个设计哲学的改变,同时也带了很多负面的声音,例如关于取消嵌套路由,完全放弃对服务器端渲染异步组件的支持等。因此,在本教程中,我们依然使用react-router的v3版本实现路由配置。在安装时指定版本3.2.1: npm install --save react-router@3.2.1
安装好react-router后,我们在新建三个组件Home,SearchBlock和SearchTransaction,然后修改App.js文件使得默认访问主域名的时候渲染Home组件,并声明嵌套路由,访问/searchBlocks和/searchTransaction时分别渲染SearchBlock和SearchTransaction组件以查询最新区块和交易信息。
import React, { Component } from 'react';
import { browserHistory, Route, Router } from 'react-router';
import Home from './components/Home';
import SearchBlock from "./components/SearchBlock";
import SearchTransaction from "./components/SearchTransaction";
class App extends Component {
render() {
return (
);
}
}
至此,一个基本的项目框架搭建完成。在此基础上,我们结合Web3.js框架开始进行应用的具体组件的开发。
具体组件开发
React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样在页面中插入组件。本地组件的类和 HTML 标签使用大、小写的约定来区分,组件类的第一个字母必须大写。除此之外,与HTML属性不同的是,组件属性声明时,class 属性需要写成 className,for 属性需要写成 htmlFor,因为 class 和 for 是 JavaScript 的保留字。关于React的更多信息可以参考其官方文档进一步学习。
我们首先编写Home组件,Home组件使用antd组件库中『上-中-下』的布局 搭建项目主页的整体框架,具体代码如下:
import { Layout, Menu, Breadcrumb } from 'antd';
import * as React from 'react';
import { IndexLink } from 'react-router';
import './Home.css'
const { Header, Content, Footer } = Layout;
class Home extends React.Component<> {
render() {
return (
区块链浏览器
{this.props.children}
Blockchain Explorer ©2018 Created by JING
);
}
}
export default Home;
上述代码声明了一个水平的菜单栏使用两个菜单项分页展示前面创建的区块查询和交易查询两个组件。npm start启动项目,页面结果如下图所示:
Home组件界面
接下来我们借助Web3.js框架实现区块的查询。首先安装web3.js: npm install web3,web3通过RPC调用可以与任何暴露了RPC接口的区块链节点通信,因此在使用Geth终端启动服务时需要开启rpc服务,为便于之后启动节点服务,在项目根目录下新建一个starthttp.sh文件,用来放置启动本地以太坊节点服务的命令:
geth --datadir data0 --networkid 1108 --rpc --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain="*" console
之后运行前只需执行bash starthttp.sh命令即可。
在SearchBlock组件中与本地节点通信来查询区块的信息前首先要创建一个web3的实例,设置一个provider。为了保证不会覆盖已有的provider,比如使用Mist钱包时已经内置,需要先检查web3实例是否已存在。注意创建实例时要保证与本地节点启动服务的端口或MetaMask以太坊网络环境的设置相对应。
if (typeof web3 !== 'undefined'){
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
}
web3提供了getBlockNumber方法获取当前的区块数量,以及getBlock方法根据block number或block hash返回对应的区块对象。Web3.js的API默认使用同步的HTTP的请求来与本地的RPC结点交互,如果想要发起异步的请求,可以使用回调函数来支持异步。区块对象中包括区块的hash、parentHash、nonce、logsBloom、stateRoot、miner、difficulty、extraData、size、gasLimit、gasUsed、timestamp等值,获取到返回的区块对象后我们构造区块数组并将其各属性与antd的Table组件的各列分别对应显示即可。综上,SearchBlock组件的完整代码如下:
class SearchBlock extends React.Component<> {
constructor(props) {
super(props);
this.state = {
loading: true,
blocks: [],
};
}
async componentDidMount() {
if (typeof web3 !== 'undefined'){
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
}
let blockNumber = 0;
await web3.eth.getBlockNumber()
.then(res => blockNumber = res)
.catch(e => console.error(e));
console.log(blockNumber);
this.getBlocks(blockNumber);
}
async getBlocks(blockNumber) {
const blocks = this.state.blocks.slice();
let currentBlockObject;
let currentBlockNumber = blockNumber;
for (let i = 0; i < blockNumber; i++, currentBlockNumber--) {
await web3.eth.getBlock(currentBlockNumber)
.then(res => currentBlockObject = res);
console.log(currentBlockObject);
blocks.push(currentBlockObject);
}
this.setState({
blocks: blocks,
loading: false
});
}
render() {
return (
);
}
}
export default SearchBlock;
Geth客户端开启节点服务,npm start启动项目,页面显示如下图所示:
至此,我们完成了区块链浏览器整体框架的搭建并实现了区块信息查询的功能,当然网站还应该提供更多链上信息的公开,例如交易信息、算力信息等等。这些实现的思路无非借助web3.js的API访问链上信息或者对web3.js API获取到信息进行加工处理,从而得到web3.js API无法直接查询到的字段,与本文介绍的区块查询异曲同工,读者可根据Web3.js的文档进一步学习,完善浏览器的更多功能。
最后编辑于 :2020.06.01 18:41:27©著作权归作者所有,转载或内容合作请联系作者人面猴序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...沈念sama阅读 145,651评论 1赞 308死咒序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...沈念sama阅读 62,308评论 1赞 259救了他两次的神仙让他今天三更去死文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...开封第一讲书人阅读 96,650评论 0赞 214道士缉凶录:失踪的卖姜人 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...开封第一讲书人阅读 41,550评论 0赞 184港岛之恋(遗憾婚礼)正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...茶点故事阅读 49,419评论 1赞 262恶毒庶女顶嫁案:这布局不是一般人想出来的文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...开封第一讲书人阅读 39,065评论 1赞 180城市分裂传说那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...沈念sama阅读 30,649评论 2赞 277双鸳鸯连环套:你想象不到人心有多黑文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...开封第一讲书人阅读 29,417评论 0赞 172万荣杀人案实录序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...沈念sama阅读 32,788评论 0赞 216护林员之死正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...茶点故事阅读 29,505评论 2赞 220白月光启示录正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...茶点故事阅读 30,842评论 1赞 233活死人序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...沈念sama阅读 27,287评论 2赞 216日本核电站爆炸内幕正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...茶点故事阅读 31,789评论 3赞 214男人毒药:我在死后第九天来索命文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...开封第一讲书人阅读 25,692评论 0赞 9一桩弑父案,背后竟有这般阴谋文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...开封第一讲书人阅读 26,126评论 0赞 170情欲美人皮我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...沈念sama阅读 33,804评论 2赞 235代替公主和亲正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...茶点故事阅读 33,949评论 2赞 239推荐阅读更多精彩内容第十一课 从宠物商店案例看DAPP架构和WEB3.JS交互接口1. 文章摘要 【本文目标】了解ETH生态下DAPP去中心化应用程序的框架和交互流程,了解WEB3.JS的作用和接...笔名辉哥阅读 5,926评论 0赞 49iOS蓝牙4.0(BLE)开发(一) 本文是参考了网上众多资料总结。 做iOS开发也有很长时间了一直没有时间和机会做蓝牙方面的开发。201...悟2023阅读 453评论 0赞 1嵌入式软件开发大作业要求 4人一组 用表格列明每个人完成的功能(百分比) 完整的文档 不能仅仅用原型软件,要自己实现功能 每个人...woodwood2000阅读 150评论 0赞 1诗意生活,诗意远方清晨 骑着摩托车 奔驰在乡间大路上 呼吸着雨后清新的空气 贪婪吸着花和叶的清香 浑身神清气爽充满力量 雨水 亲吻着...色彩斑斓的云阅读 325评论 2赞 11老北京炸酱面,是将就还是讲究?炎夏的北京,骄阳似火的晌午时分,正是属于炸酱面的时刻。 伴着四起的蝉鸣,在院子里寻一处阴凉,或蹲或坐,抄起筷子、捧...走近艺术大家阅读 416评论 0赞 1评论0赞33赞4赞赞赏更
什么是区块链浏览器? - 知乎
什么是区块链浏览器? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册网页浏览器货币区块链(Blockchain)什么是区块链浏览器?最近遇到个名字区块链浏览器,不明白是什么意思,技术中运用到区块链技术了吗?网上查到的好像只是可以查到区块链相关交易信息。显示全部 关注者64被浏览245,746关注问题写回答邀请回答好问题 3添加评论分享10 个回答默认排序rayjun 关注对于区块链,所有的数据都是开放的,但不是每个人都能写代码去查看链上的交易,大多数人会通过一个公开的窗口来查看数据。这个公开的窗口就是区块链浏览器。区块链上的数据会持续增加,对于数据的持久化和查询是浏览器的关键。本文会说明一种区块链浏览器的设计思路。1. 系统设计当一笔交易上链之后,就会存储到链上的账本中,但是账本中的数据无法直接展示。所以需要对这些账本数据进行解析,并存储,然后再从不同的维度去做对数据进行展示。系统本身并不会很复杂,整体的设计如下:整个系统做的事情就是将区块链上的数据拉取下来,放到数据库中,然后通过一个 API 服务在系统中有两个部分很重要,一个是区块的解析器,一个是拉取区块的部分。1.1 存储选型数据存储的选型很重要,使用 MySQL 存储会带来一些问题,字段扩展困难,存储扩展不方便。除了存储之外,这些数据还需要能够支持多维度的搜索,这点 MySQL 显然也无法满足。区块链通常使用 kv 数据库做存储,通常是 LevelDB、CauchDB、TiKV 等等,但是这类的数据库,对于搜索的支持比较差。而对于浏览器来说,搜索则是一个最重要的部分。在这样的情况下, ElasticSearch 是一个很好的选择,ES 支持本身支持大量数据的存储,而且可以支持水平扩展。实时的搜索也能够满足前端数据展示的需要。1.2 解析器的设计区块链就是一个链状的结构,所有的区块通过计算前一个区块的 hash 连接在一起:每一个区块中则会打包一系列的交易:在解析区块的时候,需要不断的将区块层层打开,直到将里面的每一笔交易都解析出来。然后按照不同的分类存储进 ES 中。看起来是一个挺复杂的过程,可以通过设计成单个接口来完成。1.3 安全的考虑因为浏览器是一个开放的系统,所有人都可以来访问,那么对于系统的安全就需要特别重视,避免有人对系统进行攻击。在这里需要防护的类型有两种:DDOS 攻击怕有人通过爬虫来爬取系统中的数据在网关层,可以部署一些防火墙,在 API 层,可以使用了 IP 的限制策略,比如限制同一个 IP 在一段时间内的最大访问次数。最大程度上保持浏览器的稳定运行。2. 遇到的问题完成上面的设计并实现之后,其实已经可以使用了。但发现在实际的使用过程中,还是会出现一些问题。2.1 如何处理存量数据在拉取区块链的数据时,区块中可能已经存在了很多数据,如果使用单线程去拉取数据,可能会需要很长的时间。既然单个线程拉取区块的速度不够快,那就换成多个线程,于是换成了如下的模式:这样一来,拉取的速度就快了很多,但是如果链上的数据很多,这种方式还是不太够,但到这里,其实就没办法再通过增加线程来加快拉取的速度。因为在解析区块的时候,是通过新起一个线程去解析,如果区块拉取的太快,会导致解析的线程数量急剧增加,最后导致程序崩溃。所以要通过其他的方式来提升拉取速度。既然单个实例无法继续提升性能,那就通过多个实例来提升,但是这样会引入新的问题,就是怎么在多个实例之间去同步状态。分析一下就可以发现,很多的中间数据在区块爬取的过程中器是无需统计,比如每分钟产生的区块数和每分钟产生的交易数。其实只需要在多个实例之间去同步区块的高度,让不同的区块去拉取不同的高度。这里为了减少系统的额外依赖,最后决定使用 MySQL 的悲观锁来同步区块高度,为了减少加锁的频率,降低获取锁的次吃。在同步高度的时候,会一次性去取一批高度,比如获取了 10 个高度,直接把 MySQL 中的高度更新 10。因为每个实例中本身就有多个线程在拉取数据,避免每个线程在拉取的时候都来获取一个高度。就通过在实例中线程的数量来获取区块高度,比如线程的数量是 10,那就直接在 MySQL 中抢占 10 个高度,然后同时去拉取。这样处理之后,拉取区块速度就大大提升了。拉取线上 5 千万的存量数据大概只需要 5 天左右的时间,这样是完全可以接受的。存量数据拉取完成之后,就可以恢复到单实例,多线程的拉取模式,这样更能节省资源。2.2 区块处理失败在拉取区块的过程中,有可能会有各种原因导致区块拉取失败。这个时候需要对处理失败的区块重新处理。在这里的设计中,通过一种比较简单的方式进行处理,把处理的失败的区块放到一个失败中,然后会有一个线程去监听这个失败队列,从其中获取高度重新处理。3. 读写分离但是到目前为止,这个浏览器还称不上完美。现在区块的解析和拉取区块是绑定在一起的,es 写入的错误也会导致整个的区块拉取失败。不得不通过重试的方式来完成拉取。这样会影响整体的拉取速度。随着区块链的业务越来越多,产生区块的速度也越来越快。当前的的这种拉取的方式有可能无法跟上区块的拉取速度。所以需要引入消息队列来让区块和区块的解析两部分功能彻底解耦,就像下面这样。这样将区块的拉取和解析互相不阻塞,系统也会更加稳定。文 / Rayjun编辑于 2021-12-19 15:00赞同 61 条评论分享收藏喜欢收起秘猿科技We Build Trust 关注泻药 ~感谢作者:秘猿科技产品经理 @Crypochen 区块链浏览器是所有区块链项目必备的基础设施,也是产品经理入门区块链,练手区块链产品设计不错的选择。所谓区块链浏览器,是指提供用户浏览与查询区块链所有信息的工具。在这里,用户至少包括:开发者、持币者、DApp 使用者、矿工、监管、对该区块链感兴趣的人等等。这往往与该区块链所处的阶段相关。以公链为例,在测试网阶段区块链浏览器的用户主要为开发者;当公链上主网之后,持币者、DApp 使用者、矿工等逐渐需要使用区块链;而当公链影响力越来越大,监管与对区块链好奇的用户也会使用此产品。所谓区块链所有信息,这往往会包括:ChainInfo、BlockInfo、 TransactionInfo 、ContractInfo(TokenInfo、Scriptinfo) 、AddressInfo 等等,这也基本构成了区块链浏览器产品的产品架构。基本区块链浏览器的产品设计要则:原始数据、衍生数据、链核心指标区块链浏览器首先需要摸清你所设计的区块链想要解决的问题,找到能够衡量区块链的核心指标。区块链浏览器的产品架构为:chain - block - Tx - contract - address,依据该产品架构,我们可以获得在链上的原始数据。区块链浏览器在展示原始数据的同时,也必须找到这些数据能够衍生的其他数据,并根据自身建构的核心数据指标向用户有层次地展示。综上所述,一个基本区块链浏览的本质是是根据链核心指标,合理地向各类用户展示原生数据与衍生数据。ChainInfoChainInfo 一般是该区块链的总体性概述,一般放置于浏览器页面首页,其功能在于能够快速了解该区块链的总体运行情况,某种意义上来说,区块链浏览器的总体信息也能够基本地展现该区块链的基本情况。举个简单的例子,我们看到某一条公链的每个区块中只有1条交易,还是 Coinbase 交易,那么这条公链基本就是死亡公链了。我对其进行了简单的一些分类:安全指标:算力、计算难度、挖矿收益、算力集中度等繁荣指标:交易数量、交易池、活跃账户、合约与token等价格指标:市场价格、市值等特色指标:譬如比特币体系下的 Script,EOS 体系下的 Ram/超级节点,Cosmos 体系下的 staking ,Nervos 体系下的 Cell 信息等BlockInfoBlockInfo 是指区块链的区块维度信息,一般会包括区块列表页、区块详情页。在这里就涉及到区块链的数据结构的问题。我们可以看下比特币的 Block 数据结构:比特币的数据结构往往由以下的一些数据组成,产品经理要做的往往是确定信息的优先级并进行有序排列即可。通过这种方式,我们可以基本地勾画出 BlockInfo 的基本信息。但是这显然是不够的。BlockInfo 还有大量信息可以挖掘,这些信息充满了该区块链的特点,我们已比特币举例:Confirmation 数:Confimation 数是指区块链被确认的次数,也可以认为是当下区块与最高区块的区块差。由于在比特币网络中难以避免的分叉情况,我们一般认为6个区块之后,此区块是不可窜改的。因此 Confimation 数可以提供以下的价值:告知用户6个区块后,该交易才是不可窜改的。交易费:我们都知道比特币的交易费是 Input - Output,每笔交易费本身是需要浏览器进行计算的。在这里,更值得展示的交易费是:交易中每 Byte 的交易费。当然,Coinbase 费用与总交易费用也是需要展示的,这是对于矿工的激励。TransactionInfo TransactionInfo 是指交易信息,一般有最新交易列表页,某一区块交易列表页,交易详情页等。由于在以太坊中,智能合约也被认为是一笔交易。从产品设计角度来看,智能合约的页面产品设计与交易页面的产品设计差异很大,因此本节已单纯转账的产品设计来谈。已比特币为例,交易的数据结构如下:在真正的交易结构中,我们是无法发现任何的地址信息、交易费用信息等。这里需要我们对交易有更加深入的理解。在浏览器的开发中,我们不能够将交易数据直接展示给用户,我们是需要对某些数据进行加工的。譬如:地址:在比特币网络中,一般都会遵循 私钥 - 公钥 - 地址 这样简单的推导过程,而在交易的数据结构中往往只需要使用到公钥即可。随意地展示公钥并不合理(也有人称:当时中本聪认为展示公钥可能导致私钥被破解,在量子计算的情况下)。目前的情况下,地址已经成为了区块链的必备条件。ContractInfoContractInfo 属于另一种交易,ContractInfo 主要代表了智能合约的各类信息展示。伴随着以太坊等图灵完备的区块链平台出现,智能合约的信息展示越来越重要。咱们已 token 为例来展示智能合约页面的各类问题。token 往往以 ERC20 协议的标准发布,ERC 20 协议的伪代码如下:function name() public view returns (string)
function symbol() public view returns (string)
function decimals() public view returns (uint8)
function totalSupply() public view returns (uint256)
function balanceOf(address _owner) public view returns (uint256 balance)
function transfer(address _to, uint256 _value) public returns (bool success)
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
function approve(address _spender, uint256 _value) public returns (bool success)
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)从上文可知, ContractInfo 本质是一笔特殊的交易。同时, Token 合约是有固定的格式的。因此,我们通过将交易信息与 token 合约信息作为原始数据源,就可以根据这些原始数据源对数据进行优先级排序与展示了。在这里,值得注意的一点是:并非所有的智能合约都具有通用性,也因此,大多数情况下我们无需对非通用的或者影响力较小的智能合约进行专门的合约设计。我们只需要在交易的 Data 字段中设置解码工具即可。以下是一个 token 合约的展示页面,Etherscan 对 token 合约做大量处理,毕竟在以太坊有 185,236 个 token 合约!(2019.05.06)这完全构成了合约页面标准化的条件。在这个页面,我们发现还有很多其他并不属于上述数据结构zhon 的数据:Token 价格、持有数、交易数、官网、ICO 信息、交易所信息等等数据,这些数据往往需要将与 token 相关的信息进行数据整合,甚至某些完全是其他相关业务的信息。AddressInfo AddressInfo 主要聚焦于给使用者一个”账户”概念,在比特币,所谓的账户是某一地址下所有 UTXO 的集合;在以太坊,则天然存在 Account 概念。不过对于用户来说,总归会存在一个地址的概念。AddressInfo 聚焦于该地址的所有信息展示,主要包含其基本信息与交易信息,较为明确。基本信息是一个特别具有该区块链特色的数据集合。已 EOS 为例,我们可以看到:地址、token 数、CPU、Net、Ram、Token 等各类信息。至此,我们梳理了区块链浏览器基本架构,已经基本了解 MVP 区块链浏览器的产品设计。但是,区块链浏览器并非仅仅如此,接下来我们将聚焦区块链浏览器衍生的一些功能。数据可视化 数据可视化能够帮助用户更加直观地体会到区块链关键指标。目前,主流的区块链浏览器均会在首页将该区块链的核心指标可视化,譬如价格、算力等等。同时,也会有一个页面专门可视化展示区块链数据。如下,大家可以体验一下。Ethereumhttps://etherscan.io/chartshttps://www.etherchain.org/chartsBTChttps://btc.com/statshttps://www.blockchain.com/charts关键细分领域数据深入挖掘 关键数据深入挖掘,主要是伴随着区块链的发展进入到一定阶段后,某些数据指标获得了越来越多的关注,并且该数据会经常作为一些现实行动的参考标准,那么对关键数据深入挖掘就具有一定的现实意义。以下,列出了部分比较有意思的数据网站,我会逐步慢慢补充的(行情)Gas 监控可以帮助转账与合约创建选择一个更好的时间https://ethgasstation.info/index.php矿池监控可以帮助矿工对矿工有更好的了解,计算收益等https://pool.btc.com/pool-statsICO & Token 监控可以帮助我们了解 token 项目与价值https://pool.btc.com/pool-stats如果我们用一套指标来衡量多条区块链?https://coinmetrics.io/charts/#assets=btchttp://blocktivity.info/?TB_iframe=true&width=370.8&height=658.8DApp 数据分析更是火爆异常!https://dapp.review/explorehttps://www.stateofthedapps.com/rankingshttps://dapponline.io/Defi 很火?那么咱就跟踪 Defi 的各类合约吧https://loanscan.io/小工具产品Rich List挖矿收益计算机地址关注(Watch List)名称注册(类似ENS) 我最喜欢的区块链产品:https://blockstream.info/最后一点,我们正在招聘,欢迎有志青年加入(发邮件请标记来自知乎)https://www.cryptape.com/join123 (二维码自动识别)如果有任何技术疑问或者商业场景落地咨询,请移步 CITAHub 论坛进行讨论。CITAHub 的使命是打造一个连接开发者与运营方的合作平台。区块链是用来创造价值网络的工具,基于该理解,我们希望 CITAHub 能够联合各方资源,为开发价值网络提供场景、开发工具及最佳实践。推荐阅读我们知乎回答或者以下的小课堂:秘猿科技小课堂第一期:CITA 架构与云计算服务秘猿科技小课堂第二期:白话零知识证明(Part 1)秘猿科技小课堂第三期:白话零知识(Part 2)秘猿科技小课堂第四期:Authenticated Dynamic Dictionaries in Ethereum秘猿科技小课堂第五期:区块链与共同知识库秘猿科技小课堂第六期:P2P 的网络思考秘猿科技小课堂第七期:智能合约的一种设计结构秘猿科技小课堂第八期:密码学入门(一)秘猿科技小课堂第九期:区块链共识的四个阶段秘猿科技小课堂第十期:共识 | 拜占庭容错的代表 PBFT秘猿科技小课堂第十一期:CITA 是如何达到 15000 TPS 的?发布于 2019-05-29 16:16赞同 312 条评论分享收藏喜欢
3. 区块链浏览器 — chainmaker-docs v2.3.2 documentation
3. 区块链浏览器 — chainmaker-docs v2.3.2 documentation
chainmaker-docs
v2.3.2
快速入门
1. 长安链底层技术平台介绍
2. 通过命令行体验链
3. 通过管理台体验长安链
4. 长安链开放测试网络
5. FAQ
证书模式链使用说明
1. Cert模式长安链介绍
2. 基于CA服务搭建长安链
3. 长安链CMC工具(Cert)
4. 管理Cert模式链
如何进行智能合约开发
1. 长安链智能合约开发整体介绍
2. 使用Golang进行智能合约开发
3. 通过SmartIDE编写Go智能合约
4. 使用Solidity进行智能合约开发
5. 使用Rust进行智能合约开发
6. 使用C++进行智能合约开发
7. 使用TinyGo进行智能合约开发
8. 跨合约调用
9. 合约和用户地址介绍
10. 智能合约漏洞检测工具
如何使用长安链SDK
1. Go SDK 使用说明
2. Java SDK 使用说明
3. Nodejs SDK 使用说明
4. Python SDK 使用说明
多种方式部署链
1. 启动国密证书模式的链
2. 启动支持Docker_VM的链
3. 通过Docker部署链
4. 多机部署(普通证书模式)
5. 节点自拉起服务
6. 基于现有节点新增一条链
7. 使用nginx转发p2p流量部署节点
PK模式链使用说明
1. PK模式长安链介绍
2. 部署PK账户模式的链
3. 长安链cmc工具(pk)
4. 管理PK账户模式的链
基础生态工具
1. 命令行工具
2. 长安链管理台
3. 区块链浏览器
3.1. 概述
3.2. 安装指南
3.2.1. 环境依赖
3.2.2. 浏览器部署
3.2.2.1. 前置环境
3.2.2.2. 代码下载
3.2.2.3. 启动运行
3.2.2.4. 配置调整
3.2.3. 浏览器版本升级
3.3. 使用手册
3.3.1. 初始化
3.3.2. 首页
3.3.3. 订阅区块链
3.3.4. 区块信息
3.3.5. 交易信息
3.3.6. 合约信息
3.3.6.1. 合约详情
3.3.6.2. CMDFA合约详情
3.3.6.3. CMNFA合约详情
3.3.7. 组织信息
3.3.8. 节点信息
3.3.9. 链账户信息
4. 长安链Web3插件
5. 运维监控工具
6. Chainmaker ChainList 工具
7. CA证书服务
长安链技术细节讲解
1. 整体架构说明
2. 身份权限管理
3. P2P网络
4. 核心交易流程说明
5. 共识算法
6. 同步模块
7. 智能合约与虚拟机
8. 系统合约说明
9. 数据存储
10. RPC服务
11. DB交易防重
12. 加密服务支持
13. 密码算法引擎介绍和使用手册
14. 国密TLS设计和实现
15. PWK模式长安链介绍
16. IBC身份模型
17. 状态数据库冷热分离模块设计文档
长安链进阶使用
1. 长安链配置管理
2. P2P网络管理
3. 长安链数据管理
4. SQL合约支持
5. Tikv安装部署
6. 交易过滤器-配置指南
7. 日志模块配置
8. 部署PWK账户模式的链
9. 搭建IBC模式账户体系
10. 新功能启用配置
进阶生态工具技术讲解
1. CA证书服务技术方案
2. 预言机服务技术方案
3. 代理跨链方案
4. TCIP中继跨链方案
5. SPV轻节点技术方案
6. 链下扩容技术方案
7. 归档中心设计和实现
8. 密文检索技术方案
9. 长安链敏捷测评技术文档
10. 可验证数据库
11. 面向资产互换的原子性保障应用
进阶生态工具使用
1. CA证书服务使用详解
2. 预言机工具
3. 代理跨链使用指南
4. TCIP中继跨链使用指南
5. SPV轻节点 部署和使用文档
6. 链下扩容工具
7. 归档中心使用文档
8. 密文检索工具
9. 长安链敏捷测评使用文档
10. 可验证数据库使用文档
11. 数据迁移工具
12. 虚拟机测试工具
13. 性能分析工具
14. 面向资产互换的原子性保障应用使用指南
隐私数据保护说明
1. 隐私计算方案
2. 隐私计算使用指南
3. 硬件加密方案
4. 硬件加密使用指南
5. 部署启用硬件加密的链
6. 透明数据加密
7. Bulletproofs 开发手册
8. HIBE 开发手册
9. Paillier 开发手册
10. 抗量子多方安全计算方案
11. 抗量子多方安全计算使用指南
长安链版本迭代
1. 版本迭代说明
2. 版本升级说明
其他说明
1. 贡献代码管理规范及流程
2. ChainMaker项目Golang代码规范
3. 冷链溯源
4. 供应链金融
5. 碳交易
6. 个人项目收集
chainmaker-docs
»
3. 区块链浏览器
View page source
3. 区块链浏览器
3.1. 概述
区块链浏览器提供了实时浏览、查询区块链信息和统计信息的功能。主要由前端(Web展示)、后端及数据库三部分组成。数据库采用的是MySQL,后端采用go语言开发,前端使用的是react框架。
3.2. 安装指南
3.2.1. 环境依赖
docker
docker版本为20.10.7或以上
# 以centos7为例,其他安装方式见下方官网
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker-compose版本为1.29.2或以上
# 以centos7为例,其他安装方式见下方官网
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
下载地址:
https://docs.docker.com/engine/install/
https://docs.docker.com/compose/install/
若已安装,请通过命令查看版本:
$ docker -v
$ docker-compose -v
3.2.2. 浏览器部署
3.2.2.1. 前置环境
浏览器部署需要依赖一个ChainMaker运行环境。具体的ChainMaker环境安装部署请参考对应的文档通过命令行体验链。
3.2.2.2. 代码下载
下载地址: https://git.chainmaker.org.cn/chainmaker/chainmaker-explorer
代码版本:v2.3.1
下载代码:
$ git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-explorer.git
3.2.2.3. 启动运行
提示:
若以前启动过浏览器则需要将以前数据清除,
可以使用 docker-compose -f docker-compose.yml down -v
3.2.2.3.1. 启动docker
cd chainmaker-explorer/docker
# 常规启动(快速)
docker-compose -f docker-compose.yml up -d
# 增强evm参数解析启动(慢)
# 此版本新增了合约参数解析功能,新增了一个查询evm函数签名服务镜像,将增加部署时长。
docker-compose -f docker-compose_evm.yml up -d
3.2.2.3.2. 停止docker
# 常规
docker-compose -f docker-compose.yml down
# 增强
docker-compose -f docker-compose_evm.yml down
3.2.2.3.3. 查看日志
$ docker logs -f --tail 200 docker_cm_explorer_server_1
3.2.2.3.4. 访问地址
http://localhost:9996
3.2.2.4. 配置调整
浏览器配置文件:configs/config.yml,它的配置内容包括四部分,以下是详细说明:
web:
address: 0.0.0.0
# 监听端口
port: 9997
# 是否跨域
cross_domain: true
node:
# 链和节点更新时间
update_time 30
# 节点断开连接时间和新增链时间
sync_time: 30
chain:
# 是否展示多条链的列表控件
show_config: true
# mysql配置信息
db:
host: cm_explorer_db
port: 3306
database: chainmaker_explorer_dev
user: chainmaker
passwd: Baec&chainmaker
Docker配置文件:docker-composer.yml
cm_explorer_server:
image: chainmakerofficial/explorer-backend:v2.3.1
depends_on:
- cm_explorer_db
ports:
- “9997:9997”
# 使用docker-compose 启动时,如果环境变量有show_config,会优先使用环境变量里的config
# show_config = 0 启动,show_config = 1 关闭
# environment:
# show_config: 0
restart: always
如果您的浏览器是本地测试使用,则可设置show_config = 0 ,此时任意访问用户都可在界面上管理订阅链,包括新增订阅链,取消订阅等。
如果您的浏览器是部署给C端用户使用,则可设置show_config = 1 ,此时界面上将隐藏管理订阅链的入口。
3.2.3. 浏览器版本升级
停止旧版浏览器:在旧版本项目chainmaker-explorer/docker目录下执行:docker-compose down -v,注意有个后缀-v,删除所有数据;
按照上方教程启动新版浏览器;
重新订阅所需要的链。
3.3. 使用手册
3.3.1. 初始化
初始化时,需要先订阅一条链,请确保所填写的信息和要订阅的链是一致的,并且用来订阅的节点的网络连接是通畅的。
如需订阅多条链,后续可在区块链管理处继续添加订阅。
参数说明
区块链ID:使用命令行创建的链默认链ID为chain1
节点ip和端口:ip为部署链的机器ip,port使用对应节点的rpc地址,一般默认为12301
组织ID:可以从每个节点对应的配置文件chainmaker.yml(chainmaker-go/build/config/node1/chainmaker.yml)获取
TLS:请根据您的链的实际情况,选择是否开启TLS。目前通过官方开源文档教程上起的链,默认TLS(路径:chainmaker-go/build/config/node1/chainmaker.yml对应的参数net.tls.enabled)是开启的,默认的TLSHostname为chainmaker.org,如您自定义修改过,请按照实际情况填写。
组织ca证书:根据选择的组织id,从对应的节点中拿到对应组织下的ca.crt(eg:组织id为wx-org1.chainmaker.org的证书路径chainmaker-go/build/config/node1/certs/ca/wx-org1.chainmaker.org/ca.crt)
用户证书、私钥:需要使用sign证书和私钥,一般默认使用admin.sign.crt和admin.sign.key(路径:chainmaker-go/build/config/node1/certs/user/)
3.3.2. 首页
通过右上角可以切换跳转到已经订阅的其他链的浏览器页面,也可继续添加订阅链。
支持通过区块哈希/区块高度/交易id/合约名称直接搜索。
点击左下角统计当前链的相关数据,如区块高度,交易数等,点击将跳转到对应的区块列表页、交易列表页、合约列表页、组织列表页、节点列表页、账户列表页等。
首页将展示当前最新的区块信息,包含每个区块的区块高度、包含交易数、出块节点。
首页将展示当前最新的区块信息,包含每笔交易的交易id、交易发起者、所调用的合约以及交易发起时间。
首页将展示当前最新的区块信息,包含每个合约的合约名称、合约创建者、合约版本、合约部署时间。
3.3.3. 订阅区块链
支持同时订阅多条链,再订阅链时,请确保所填写的信息和要订阅的链是一致的,并且用来订阅的节点的网络连接是通畅的。
支持订阅Cert,和Public两种账户模式的链。
不允许同时订阅同一条链,也不允许同时订阅ChainID相同的链。
如果订阅后,所订阅的节点运行出现异常,如停机了,或者被踢出网络了,则浏览器也将无法获取信息,您可以通过重新订阅按钮,修改到正常运行的节点,恢复订阅。
支持删除订阅,删除后,将不会再获取该链的信息,且原来的已经订阅的数据都会被删除,如需重新获取,需要再次订阅。
3.3.4. 区块信息
此处展示区块列表,点击查看,可以查看该区块的详情。
支持查看某一区块的具体信息,包括区块哈希,读写集哈希,DAG信息,以及本区块内的交易信息。
3.3.5. 交易信息
此处展示交易列表,支持通过实际时间维度筛选交易,点击查看,可以查看该交易的详情。
支持查看某一条交易详情,包括交易的所属区块信息,交易发起人信息,交易所调用的合约执行情况。
3.3.6. 合约信息
此处展示合约列表,点击查看,可以查看该合约的详情。
如果安装了长安链Web3插件v1.5.2+,可以直接把合约订阅到插件内。
3.3.6.1. 合约详情
支持查看合约信息,包括合约的地址,合约的创建者信息,以及合约调用的历史交易记录。
支持查看合约调用过程中,产生的事件信息。
3.3.6.2. CMDFA合约详情
如果所订阅的合约符合长安链合约标准协议规范,类型为CMDFA则浏览器处会额外展示CMDFA内的合约资产的流转记录。
3.3.6.3. CMNFA合约详情
如果所订阅的合约符合长安链合约标准协议规范,类型为CMNFA则浏览器处会额外展示CMNFA内的合约资产的流转记录。
以及可以查看合约内的数字藏品资产详情。
注意,相关数字藏品的metadata信息必须符合长安链合约标准规范否则将解析失败。具体如下:
{
"author":"凌风出品",
"orgName":"北京美好景象图片有限公司",
"name":"Lionel Messi",
"description":"利昂内尔·安德烈斯·“利奥”·梅西·库奇蒂尼,简称梅西(西班牙语:Lionel Messi),生于阿根廷圣菲省罗萨里奥,现正效力于法甲俱乐部巴黎圣日耳曼,同时担任阿根廷国家足球队队长,司职边锋、前锋及前腰。目前他共获得7座金球奖、6次世界足球先生及6座欧洲金靴奖。",
"image":"https://www.strikers.auction/images/cards/000.png",
"seriesHash":"5fabfb28760f946a233b58e99bfac43f3c53b19afa41d26ea75a3a58cbfc1491"
}
请注意metadata必须是一段标准的json,且字段名称需与上述例子保持一致,否则将无法解析到对应的数据。其中
作品URL为该NFT图片资源存放的地址,
作品哈希为该图片对应的sha256哈希值,通过将资源哈希值上链进行存证,确保就算是存储在中心化云服务的NFT也不可被篡改。
3.3.7. 组织信息
此处展示参与该区块链的组织信息。
因public模式的链没有组织概念,故而该模式下不展示组织信息模块。
3.3.8. 节点信息
此处展示参与该区块链的节点信息。
3.3.9. 链账户信息
此处展示该区块链目前已经发送过或者接收过交易的用户信息。
无论是证书账号还是公钥账户都有其对应的链账户地址。
Previous
Next
© Copyright chainmaker.org.
Built with Sphinx using a
theme
provided by Read the Docs.
以太坊开发文档 | ethereum.org
发文档 | ethereum.org跳转至主要内容学习用法构建参与研究搜索语言 ZH帮助更新此页面本页面有新版本,但现在只有英文版。请帮助我们翻译最新版本。翻译页面没有错误!此页面未翻译,因此特意以英文显示。不再显示Change page概述基础主题以太坊简介以太币简介去中心化应用程序简介Web2 与 Web3 的对比帐户交易区块以太坊虚拟机 (EVM)操作码Gas费用节点和客户端运行节点客户端多样性节点即服务节点架构轻客户端归档节点引导节点网络共识机制工作量证明矿工挖矿算法Dagger-HashimotoEthash权益证明Gasper弱主观性认证权益证明机制的奖励和惩罚权益证明攻击与防御密钥权益证明与工作量证明提出区块权益正明常见问题以太坊堆栈堆栈简介智能合约智能合约语言智能合约结构智能合约库测试用智能合约编译智能合约部署智能合约验证智能合约升级智能合约智能合约安全性智能合约形式化验证可组合性开发网络开发框架以太坊客户端APIJavaScript API后端APIJSON-RPC数据和分析区块浏览器存储集成开发环境 (IDE)编程语言DartDelphi.NETGolangJavaJavaScriptPythonRubyRust语言高级链桥标准令牌标准ERC-20:同质化代币ERC-721:非同质化代币 (NFT)ERC-777ERC-1155ERC-4626最大可提取价值 (MEV)预言机缩放乐观卷叠零知识卷叠状态通道侧链以太坊 Plasma 扩容解决方案Validium数据可用性网络层网络地址门户网络数据结构与编码默克尔前缀树递归长度前缀编码 (RLP)简单序列化 (SSZ)Web3 密钥存储定义设计基础设计和用户体验简介以太坊开发文档c上次修改时间: @cuijia(opens in a new tab), Invalid DateTime查看贡献者在本页面开发单元基础主题以太坊堆栈高级本文档旨在帮助你构建以太坊。 它介绍了以太坊概念,解释了以太坊技术栈,并记录了以太坊更复杂的应用和使用案例的高级主题。基于开源社区的努力,你可以随时提出新的主题,添加新内容,并在认为可能有用的地方提供示例。 所有文档都可以通过 GitHub 编辑 — 如果不确定如何操作,请遵循这些说明(opens in a new tab)。开发单元如果这是你首次尝试以太坊开发,我们建议从头开始,有始有终,从头到尾。基础主题以太坊简介 – 以太坊简要概述以太币简介 – ETH 简要概述去中心化应用程序简介 – 去中心化应用程序简介Web2 与 Web3 的对比 – 基于区块链的应用程序提供的基本差异帐户 – 网络中能够持有余额和发送交易的实体交易 – 转账和其他导致以太坊状态变化的行为区块 – 交易分批进行,以确保状态在所有行为者之间同步。以太坊虚拟机 (EVM) – EVM 处理以太坊网络上的所有计算操作码Gas费用 – 交易处理所需的算力,由交易汇款人使用 ETH 支付节点和客户端 – 参与网络的个人和他们运行的交易验证软件运行节点客户端多样性节点即服务节点架构轻客户端归档节点引导节点网络 – 部署以太坊,包括测试网络共识机制 – 分布式网络的各个节点如何就系统的当前状态达成共识工作量证明权益证明以太坊堆栈堆栈简介 – 以太坊/web3 堆栈概述智能合约 – 驻留在以太坊地址并在交易触发时运行功能的程序智能合约语言智能合约结构智能合约库测试用智能合约编译智能合约部署智能合约验证智能合约升级智能合约智能合约安全性智能合约形式化验证可组合性开发网络 – 用于在部署前测试 dapp 的本地区块链环境开发框架 – 方便以太坊开发的工具以太坊客户端API – 便利库,允许你的 web 应用程序与以太坊和智能合同交互JavaScript API后端APIJSON-RPC数据和分析 – 区块链数据如何汇总、组织并实施到 dapp 中区块浏览器存储 – 去中心化储存结构和机制集成开发环境 (IDE) – 写入 dapp 代码的最佳环境编程语言 – 如何使用你可能已经知道的语言开始使用以太坊DartDelphi.NETGolangJavaJavaScriptPythonRubyRust语言高级链桥 – 面向开发者的桥接概述标准 – 商定的协议,以保持项目效率和社区可及性令牌标准最大可提取价值 (MEV) – 从除了区块奖励之外的以太坊区块链中提取价值预言机 – 如何将信息注入到以太坊区块链中缩放 – 随着以太坊的发展,维护去中心化和安全的方法乐观卷叠零知识卷叠状态通道侧链以太坊 Plasma 扩容解决方案Validium数据可用性 – docs-nav-data-availability-description网络层 – 以太坊网络层的解释网络地址门户网络数据结构与编码 – 以太坊堆栈中使用的数据结构和编码方案的解释默克尔前缀树递归长度前缀编码 (RLP)简单序列化 (SSZ)Web3 密钥存储定义back-to-top ↑本文对你有帮助吗?是否下一页以太坊简介编辑页面(opens in a new tab)在本页面开发单元基础主题以太坊堆栈高级网站最后更新: 2024年2月16日(opens in a new tab)(opens in a new tab)(opens in a new tab)使用以太坊查找钱包获取以太币Dapps - 去中心化应用二层网络运行节点稳定币质押ETH学习学习中心什么是以太坊?什么是以太币 (ETH)?以太坊钱包Gas fees以太坊安全和预防欺诈措施什么是 Web3?智能合约以太坊能源消耗以太坊路线图以太坊改进提案 (Eip)以太坊的历史以太坊白皮书以太坊词汇表以太坊治理区块链桥零知识证明测试中心开发者开始体验相关文档教程通过编码来学习设置本地环境生态系统社区中心以太坊基金会以太坊基金会的博客(opens in a new tab)生态系统支持方案(opens in a new tab)以太坊漏洞悬赏计划生态系统资助计划以太坊品牌资产Devcon(opens in a new tab)企业级应用主网以太坊私密以太坊企业级应用关于ethereum.org关于我们工作机会参与贡献语言支持隐私政策使用条款缓存政策联系我们(opens in a new t以太坊区块链浏览器搭建 | 0xTrustTryEP
以太坊区块链浏览器搭建 | 0xTrustTryEP
0xTrustTryEP
Just do it, deeply...
Follow me on GitHub
home
archives
tags
search
about
以太坊区块链浏览器搭建
write by donaldhan, 2020-05-19 10:01
Ethereum
引言
针对私有化的方式,如果链已经搭好,如何查看链上的数据,除了使用web3j命令行,和相关RPC接口拉取链上数据,有没有其他的方式呢,答案是有的,今天我们来看如何使用成熟的浏览器方案,搭建浏览器,已对链上的区块,交易,合约数据可视化的监控。
目录
环境准备
安装浏览器
启动以太坊
启动explorer
浏览器的使用
总结
附
环境准备
安装GIt
donaldhan@Donaldhan:~/Documents/explorer$ sudo apt-get install git
安装wget等
donaldhan@Donaldhan:~/Documents/explorer$ sudo apt-get install -y make g++ wget ca-certificates
安装node
donaldhan@Donaldhan:~/Documents/explorer$ wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz
解压
tar -xvf node-v8.11.4-linux-x64.tar.xz
配置环境变量
donaldhan@Donaldhan:~/Documents/explorer/node-v8.11.4-linux-x64$ pwd
/home/donaldhan/Documents/explorer/node-v8.11.4-linux-x64
donaldhan@Donaldhan:~/Documents/explorer/node-v8.11.4-linux-x64$ vim ~/.bashrc
donaldhan@Donaldhan:~/Documents/explorer/node-v8.11.4-linux-x64$ source ~/.bashrc
donaldhan@Donaldhan:~/Documents/explorer/node-v8.11.4-linux-x64$ node -v
v8.11.4
donaldhan@Donaldhan:~/Documents/explorer/node-v8.11.4-linux-x64$
donaldhan@Donaldhan:~/Documents/explorer/node-v8.11.4-linux-x64$ tail -n 10 ~/.bashrc
export NODE_HOME=/home/donaldhan/Documents/explorer/node-v8.11.4-linux-x64
export PATH=${JAVA_HOME}/bin:${GO_HOME}/bin:${GETH_HOME}/bin:${NODE_HOME}/bin:$PATH
安装浏览器
下载eth区块链浏览器源码
donaldhan@Donaldhan:~/Documents/explorer$ git clone https://github.com/etherparty/explorer
首先需要进入到你刚刚下载explorer的目录
到下载explorer的目录,使用 npm 安装 bower
npm install -g bower -y
donaldhan@Donaldhan:~/Documents/explorer$ cd explorer/
donaldhan@Donaldhan:~/Documents/explorer/explorer$ ls
app bower.json e2e-tests karma.conf.js LICENSE package.json README.md
donaldhan@Donaldhan:~/Documents/explorer/explorer$ npm install -g bower -y
npm WARN deprecated bower@1.8.8: We don't recommend using Bower for new projects. Please consider Yarn and Webpack or Parcel. You can read how to migrate legacy project here: https://bower.io/blog/2017/how-to-migrate-away-from-bower/
/home/donaldhan/Documents/explorer/node-v8.11.4-linux-x64/bin/bower -> /home/donaldhan/Documents/explorer/node-v8.11.4-linux-x64/lib/node_modules/bower/bin/bower
+ bower@1.8.8
added 1 package in 5.805s
donaldhan@Donaldhan:~/Documents/explorer/explorer$ bower -v
1.8.8
初始化bower
初始化 bower
bower init
donaldhan@Donaldhan:~/Documents/explorer/explorer$ bower init
bower existing The existing bower.json file will be used and filled in
? name angular-seed
? description A starter project for AngularJS
? main file
? keywords
? authors
? license MIT
? homepage https://github.com/angular/angular-seed
? set currently installed components as dependencies? No
? add commonly ignored files to ignore list? Yes
? would you like to mark this package as private which prevents it from being accidentally published to the registry? Yes
{
name: 'angular-seed',
description: 'A starter project for AngularJS',
version: '0.0.0',
homepage: 'https://github.com/angular/angular-seed',
license: 'MIT',
private: true,
dependencies: {
angular: '~1.4.0',
'angular-route': '~1.4.0',
'angular-loader': '~1.4.0',
'angular-mocks': '~1.4.0',
'html5-boilerplate': '~5.2.0',
web3: '~0.14.0',
'angular-bootstrap': '~0.13.3'
},
main: '',
ignore: [
'**/.*',
'node_modules',
'bower_components',
'app/bower_components',
'test',
'tests'
]
}
? Looks good? Yes
donaldhan@Donaldhan:~/Documents/explorer/explorer$
bower 安装
使用如下命令
bower install --allow-root
启动以太坊
具体参考如下文章:
Geth搭建私链
启动explorer
在下载的explorer目录下执行
npm start
donaldhan@Donaldhan:~/Documents/explorer/explorer$ npm start
Starting up http-server, serving ./app on port: 8000
Hit CTRL-C to stop the server
访问http://192.168.230.128:8000, 可以搜索看到我们的区块信息;
浏览器的使用
通过搜索框,根据交易地址,可以查看交易信息。
查看生成的区块
查看区块详情
根据交易地址,查看交易详情
如果我们先监控远程的以太坊节点或者,远程访问以太坊浏览器,我们可以修改相应的配置。
访问远程以太网节点
修改浏览的以太坊节点监听地址
root@cc-virtual-machine:~# cd explorer
root@cc-virtual-machine:~/explorer# vim app/app.js
将
var eth_node_url = ‘http://localhost:8545’; // TODO: remote URL
var eth_node_url = ‘http://远程或本地以太坊节点ip:8545’;
远程访问浏览器地址
root@cc-virtual-machine:~# cd explorer
root@cc-virtual-machine:~/explorer# vim ./package.json
donaldhan@Donaldhan:~/Documents/explorer/explorer$ vim package.json
修改浏览器绑定地址
"start": "http-server ./app -a localhost -p 8000 -c-1"
为
"start": "http-server ./app -a mainEtherNode -p 8000 -c-1"
我的hosts配置
root@Donaldhan:/home/donaldhan/Documents/explorer/explorer# cat /etc/hosts
127.0.0.1 localhost
127.0.0.1 Donaldhan
192.168.230.128 mainEtherNode
总结
explorer是一个基于node的以太坊浏览器,使用explorer我们界面化的查看区块链,及链上交易信息。
附
参看文献
explorer
以太坊区块链浏览器搭建
以太坊区块链浏览器搭建
相关问题
Allow Access to Geth and Refresh the Page???
Allow Access to Geth and Refresh the Page???
geth --rpc --rpccorsdomain "http://192.168.230.128:8000"
出现上面的问题,首先检查app的配置以太坊节点配置:
var eth_node_url = 'http://192.168.230.128:6060'; // TODO: remote URL
再次检查 geth的rpc监听地址( –rpcaddr “192.168.230.128”)及允许访问的地址配置(–rpccorsdomain “*“)
geth --identity "ETH-SlaveNode" --rpc --rpcaddr "192.168.230.128" --rpcport "6060" --rpccorsdomain "*" --datadir "/home/donaldhan/Documents/data" --port "30303" --maxpeers 5 --rpcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --networkid 3131 console
Error: Allow Access to Geth and Refresh the Page
Living in HangZhou
ravitn@aliyun.com
GitHub
| Juejin
| Jianshu
| Zhihu
| CSDN
Categories
Life 20
Util 3
Spring-framework 20
Nginx 1
Java 4
Mina 1
Netty 1
Mysql 2
Super-diamond 1
Zookeeper 15
Linux 2
Bigdata 9
Hystrix 1
Music 3
Blockchain 7
Maven 1
Xxl_job 1
Dubbo 6
Seata 2
Essay 1
Defi 3
Dao 2
Solidity 3
Tags
Compound
Dubbo
Ethereum
Flume
Hadoop
Hbase
Hive
Hystrix
JUC
JVM
Java
Mina
Moloch
Mysql
NIO
Netty
OpenZeppelin
Remix
Seata
Sqoop
Super-Diamond
Truffle
Ubuntu
Uniswap
WebService
XXL_JOB
ZkClient
Zookeeper
android
essay
family
freedom
gradle
linux
maven
p2p
rap
selenium
solidity
spring-context
spring-el
travel
web3j
xml
Copyright © 0xTrustTryEP 2023 Theme on GitHub |
谈谈区块链浏览器产品设计 - 知乎
谈谈区块链浏览器产品设计 - 知乎切换模式写文章登录/注册谈谈区块链浏览器产品设计Cryptochen区块链 | 社会学前言区块链浏览器是所有区块链项目必备的基础设施,也是产品经理入门区块链,练手区块链产品设计不错的选择。本文阅读需要对区块链有一定了解,如果没有提前对区块链有了解,预计会懵逼的。本文的目标是谈谈 MVP 区块链浏览器产品设计,而并非讨论一个功能完善的产品。所谓区块链浏览器,是指提供用户浏览与查询区块链所有信息的工具。在这里,用户至少包括:开发者、持币者、DApp 使用者、矿工、监管、对该区块链感兴趣的人等等。这往往与该区块链所处的阶段相关。已公链为例,在测试网阶段区块链浏览器的用户主要为开发者;当公链上主网之后,持币者、DApp 使用者、矿工等逐渐需要使用区块链;而当公链影响力越来越大,监管与对区块链好奇的用户也会使用此产品。在不同的阶段面向不同的用户,自然也有不一样的产品设计。所谓区块链所有信息,这往往会包括:ChainInfo、BlockInfo、 TransactionInfo 、ContractInfo(TokenInfo、Scriptinfo) 、AddressInfo 等等基本信息,这也基本构成了区块链浏览器产品的产品架构。同时,在这些基本信息基础之上能够形成各类衍生的有意义的数据,这些数据也是区块链浏览器必然要展示的。区块链浏览器产品设计要则:原始数据、衍生数据、链核心指标首先,我们谈谈区块链浏览器的产品设计要则:区块链浏览器首先需要摸清你所设计的区块链想要解决的问题,找到能够衡量区块链的核心指标。区块链浏览器的产品架构为:chain - block - Tx - contract - address,依据该产品架构,我们可以获得在链上的原始数据。区块链浏览器在展示原始数据的同时,也必须找到这些数据能够衍生的其他数据,并根据自身建构的核心数据指标向用户有层次地展示。综上所述,一个基本区块链浏览的本质是是根据链核心指标,合理地向各类用户展示原始数据与衍生数据。MVP 区块链浏览器产品设计ChainInfoChainInfo 是该区块链的总体性概述,一般放置于浏览器首页,其功能在于能够快速让用户了解该区块链的总体运行情况。举个简单的例子,我们看到某一条公链的每个区块中只有1条交易,还是 Coinbase 交易,那么这条公链基本就是死亡公链了。本文对其进行了简单的一些分类:安全指标:算力、计算难度、挖矿收益、算力集中度等繁荣指标:交易数量、交易池、活跃账户、合约与token等价格指标:市场价格、市值等特色指标:譬如比特币体系下的 Script,EOS 体系下的 Ram/超级节点,Cosmos 体系下的 staking ,Nervos 体系下的 Cell 信息等。EOSParkBlockInfoBlockInfo 是指区块链的区块维度信息,一般会包括区块列表页、区块详情页。在这里就涉及到区块链的数据结构的问题。比特币的 Block 数据结构往往由以下的一些数据组成,产品经理要做的是确定信息的优先级并进行有序排列。通过这种方式可以基本勾画出 BlockInfo 的基本信息。(当然,这里信息排列就在于核心指标构建了)但是这显然是不够的。BlockInfo 还有大量信息可以挖掘,这些信息充满了该区块链的特点。这也就是上文所提到的衍生数据,由原生数据聚合而成。我们已比特币举例:Confirmation 数:Confimation 数是指区块被确认的次数,也可以认为是当下区块与最高区块的区块差。由于在比特币网络中难以避免的分叉情况,一般认为6个区块之后,此区块被窜改的几率很低。交易费:比特币的交易费是 Input 与 Output 的差额,每笔交易费是需要浏览器计算的。在这里,更值得展示的交易费形式是:交易中每 Byte 的交易费。当然,Coinbase 费用与总交易费用也是需要展示的,这代表了对于矿工的激励。BTC.comTransactionInfoTransactionInfo 是指交易信息,一般有最新交易列表页,某一区块交易列表页,交易详情页等。由于在以太坊中,智能合约也被认为是一笔交易。从产品设计角度来看,智能合约的页面产品设计与交易页面的产品设计差异很大,因此本节已单纯转账的产品设计进行讨论。已比特币为例,交易的数据结构如下:BTC 交易数据结构在交易结构中,我们是无法发现任何的地址信息、交易费用信息的。这里需要对交易有更加深入的理解:在浏览器的开发中,我们不仅仅要将交易数据直接展示给用户,同时也需要对某些数据进行加工。(也就是上文所提的衍生数据)譬如:地址:在区块链网络中,一般都会遵循 私钥 - 公钥 - 地址 这样简单的推导过程,而在交易的数据结构中往往只需要使用公钥即可。随意地展示公钥并不合理(有人称:当时中本聪认为展示公钥可能导致私钥被破解,在量子计算的情况下)。目前的情况下,地址已经成为了区块链的必备条件。地址就是加工公钥所得。ContractInfoContract 属于另一种交易,ContractInfo 代表了智能合约在区块链浏览器中的各类信息展示。伴随着以太坊等图灵完备的区块链平台出现,智能合约越来越重要。已 token 为例来展示智能合约页面的产品设计。Token 往往以 ERC20 协议的标准发布,ERC 20 协议的伪代码如下:*function* name() *public* view returns (string)
*function* symbol() *public* view returns (string)
*function* decimals() *public* view returns (uint8)
*function* totalSupply() *public* view returns (uint256)
*function* balanceOf(address _owner) *public* view returns (uint256 balance)
*function* transfer(address _to, uint256 _value) *public* returns (bool success)
*function* transferFrom(address _from, address _to, uint256 _value) *public* returns (bool success)
*function* approve(address _spender, uint256 _value) *public* returns (bool success)
*function* allowance(address _owner, address _spender) *public* view returns (uint256 remaining)
event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)从上文可知, Contract 本质是一笔特殊的交易。同时,Token 合约是有固定的格式的。因此,通过将交易信息与 Token 合约信息作为原始数据源,就可以根据这些原始数据源对数据进行优先级排序与展示了。在这里,值得注意的一点是:并非所有的智能合约都具有通用性。因此,大多数情况下无需对非通用的或者影响力较小的智能合约进行专门的合约页面设计,只需要在交易的 Data 字段中设置解码功能即可。以下是一个 Token 合约的展示页面,Etherscan 对 Token 合约做大量处理,毕竟在以太坊有 185,236 个 token 合约!(2019.05.06)这完全构成了合约页面标准化的条件。在这个页面,存在着很多并不属于上述数据结构的数据:Token 价格、持有数、交易数、官网、ICO 信息、交易所信息等等数据,这些数据往往需要将与 Token 相关的信息进行数据整合,甚至某些完全是其他相关业务的信息。EtherscanAddressInfoAddressInfo 主要聚焦于给使用者一个”账户”概念。在比特币,所谓的账户是某一地址下所有 UTXO 的集合;在以太坊中天然存在 Account 概念。不过对于用户来说,总归会存在一个账户的概念。AddressInfo 聚焦于该地址(账户)的所有信息展示,主要包含其基本信息与交易信息,较为明确。基本信息是一个特别具有该区块链特色的数据集合。已 EOS 为例,我们可以看到:地址、Token 数、CPU、Net、Ram、Token 等各类信息。EOSPark至此,我们梳理了区块链浏览器基本架构,已经基本了解了 MVP 区块链浏览器的产品设计。但是,区块链浏览器并非仅仅如此,接下来我们将聚焦区块链浏览器衍生的一些功能。区块链浏览器衍生功能数据可视化数据可视化能够帮助用户更加直观地体会到区块链关键指标。目前,主流的区块链浏览器均会在首页将该区块链的核心指标可视化,譬如价格、算力等等。同时,也会有一个页面专门可视化展示区块链数据。如下,大家可以体验一下。EthereumBTC关键细分领域数据深入挖掘伴随着区块链的发展进入到一定阶段,某些数据指标获得了越来越多的关注,并且该数据会经常作为一些现实行动的参考标准,那么对该关键数据深入挖掘就具有一定的现实意义。以下,列出了部分比较有意思的数据网站,我会逐步慢慢补充的1)Gas 监控可以帮助转账与合约创建选择一个更好的时间2)矿池监控可以帮助矿工对矿工有更好的了解,计算收益等3)ICO & Token 监控可以帮助我们了解 token 项目与价值4)用一套指标来衡量多条区块链?5)DApp 数据分析一直是火爆异常!6)Defi 很火?那么咱就跟踪 Defi 的各类合约吧KYC & AML为了打击洗钱等犯罪行动,将区块链数据与现实人或者公司进行匹配,能够打击各类犯罪行为。譬如 chainalysis:小工具产品小工具产品千奇百怪,但是各有些许用户,这里就不一一说了。富有名单监控挖矿收益计算机地址关注(Watch List)名称注册(类似ENS)合约审计广播签名交易猎奇的浏览器产品虚拟游戏的浏览器自然要酷酷的来自 WAX 的区块链浏览器告诉我们,浏览器的颜值也很重要来自 TE -Food 的区块链浏览器是可以看到吃的鸡蛋的。最后,大力推荐看看一个我最喜欢的区块链浏览器产品:绝对是 UTXO 区块链浏览器中最为优雅的设计了!编辑于 2019-05-06 22:25区块链(Blockchain)产品设计赞同 17添加评论分享喜欢收藏申请