区块链
区块链修炼之路
hello2mao
https://github.com/hello2mao
展开
-
Libra源码分析:分层确定性钱包的实现
文章目录1. 概述2. 钱包架构3. 钱包初始化4. 钱包导入、导出5. 秘钥派生新账户6. 总结博客链接:https://hello2mao.github.io/2019/12/29/libra-wallet/1. 概述libra-wallet是libra的钱包模块,模块位置:client/libra_wallet.libra-wallet是一个分层确定性钱包。什么是分层确定性钱包可...原创 2019-12-29 21:05:18 · 1103 阅读 · 0 评论 -
Sidetree协议
1. 概述1.1. Sidetree1.2. DID2. Sidetree 协议2.1. 协议概述2.2. 工作原理2.3. Sidetree 协议的 DID 操作2.3.1. DID OP2.3.2. Batch File 和 Anchor File2.4. Sidetree REST API3. Sidetree 协议 的 Node.js 实现3....原创 2019-12-03 21:07:51 · 1060 阅读 · 0 评论 -
解析Solidity预编译合约的实现
在Solidity中存在很多预先编译好的合约(或者说是方法)可供调用,例如sha256、keccak256等,本文简单分析下其实现逻辑。例如有如下测试合约,在测试合约内调用sha256:pragma solidity ^0.4.24;contract Sha256Test { uint256 time = 123; event hashResult(bytes32); ...原创 2019-02-14 10:06:40 · 2879 阅读 · 0 评论 -
解析Quorum -- 摩根大通的企业级区块链解决方案
概述架构隐私性方案概述案例一案例二实现细节Quorum组件Tessera组件共识算法RaftLifecycle of a TransactionBlock RaceSpeculative MintingIBFT节点的许可管理更高的性能TPS测试参考概述Quorum是基于以太坊的Golang实现go-ethereum开发...原创 2019-02-13 14:38:35 · 2917 阅读 · 0 评论 -
Ethereum-ERC721智能合约和Dapp实践--以太猫CryptoKitties的简单实现
一、概述二、设计目标三、游戏界面四、游戏系统设计4.1 交易系统4.1.1 帐号4.1.2 产品4.1.3 买卖交易4.2 繁育系统4.3 对战系统4.4 喂养系统4.5 升级系统五、合约设计5.1 合约关键细节5.1.1 产品数据结构5.1.2 DNA属性5.1.3 繁育&喂养5.1.4 对战5.1.5 升级一、概述...原创 2018-07-27 17:21:52 · 2073 阅读 · 0 评论 -
Fabric中的Second-Chance缓存淘汰算法的实现分析
文章目录一、概述1.1 Fabric MSP1.2 Second-Chance Algorithm二、Fabric实现分析2.1 创建缓存实例2.2 查询对象2.3 插入对象一、概述1.1 Fabric MSPFabric引入MSP(Membership Service Provider),即成员关系服务提供者,这一抽象化的模块组件来管理Fabric中的众多参与者(peer、orderer等)。MSP将颁发证书和校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。对Fabric网络中的成员原创 2020-05-19 13:48:13 · 1031 阅读 · 0 评论 -
图解Fabric混合组网架构
Fabric的优势就是联盟链,企业在使用Fabric与其他内外部组织构建联盟链的时候,必然需要对Fabric运行时的混合组网架构了然于心,从而可以很好的控制原创 2020-05-14 18:51:05 · 1163 阅读 · 0 评论 -
Fabric 2.x 安装链码流程
以在mychannel中安装fabcar为例:# 1. 打包链码peer lifecycle chaincode package fabcar.tar.gz --path ../chaincode/fabcar/go/ --lang golang --label fabcar_1# 2.1 组织Org1:安装链码peer lifecycle chaincode install fabcar.tar.gz# 2.2 组织Org2:安装链码peer lifecycle chaincode ins原创 2020-05-12 20:09:19 · 1968 阅读 · 0 评论 -
图解Fabric各模块间grpc通讯情况
对于接口的介绍,可以参考这个博文:https://blog.csdn.net/DAOSHUXINDAN/article/details/104668870原创 2020-05-12 17:46:31 · 955 阅读 · 0 评论 -
Fabric组织加入已经存在的应用通道流程
以组织Org3加入已经存在的通道mychannel为例:# 1.1 获取通道最新的配置块peer channel fetch config config_block.pb -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c mychannel --tls --cafile $ORDERER_CA# 1.2 解码成json格式,提取出配置部分configtxlator proto_decode --input原创 2020-05-12 14:22:29 · 850 阅读 · 0 评论 -
Fabric创建通道流程解析
以两个组织Org1和Org2加入新创建的通道mychannel为例,给出命令行的步骤如下:# 1.1 生成创建通道的交易:mychannel.txconfigtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel# 1.2 为组织Or...原创 2020-05-08 16:41:42 · 2332 阅读 · 0 评论 -
Fabric RFC: Channel Participation API
文章目录一、概述二、现存问题解析2.1 隐私问题2.2 扩展性问题可操作性三、Channel participation API 方案四、链接一、概述目前fabric中创建并加入通道的流程在隐私性、扩展性以及可操作性上都存在很多问题,作者提出了Channel participation API的设计来优化这些问题。Channel participation API的核心是去除了目前通道管理对...原创 2020-04-29 10:53:07 · 424 阅读 · 0 评论 -
图解Fabric--账本结构
文章目录一、账本二、世界状态三、区块链3.1 区块3.2 交易一、账本Fabric账本有两部分组成:世界状态:存储在DB中,可以认为是当前区块链的一个快照,方便查找。区块链:由区块组成的链,区块内是交易。二、世界状态三、区块链3.1 区块3.2 交易...原创 2020-04-23 13:35:36 · 1464 阅读 · 0 评论 -
IPFS节点对外入口
一、启动日志Initializing daemon...go-ipfs version: 0.4.23-Repo version: 7System version: amd64/darwinGolang version: go1.13.7Swarm is limited to private network of peers with the swarm keySwarm key f...原创 2020-04-22 13:53:01 · 4767 阅读 · 0 评论 -
Hyperledger Fabric v2.x 最新资料汇总
官方Github:https://github.com/hyperledger/fabric文档:https://hyperledger-fabric.readthedocs.io/en/latest/whatis.htmlJira:https://jira.hyperledger.org/projects/FAB/summary解析原创 2020-04-22 13:22:36 · 1262 阅读 · 1 评论 -
Libra客户端使用
1. libra net1.1. test net1.2. local net2. CLI cmd2.1. client help2.2. client example2.3. CLI cmd3. account3.1. account help3.2. account create3.3. account list3.4. account write3....原创 2019-12-29 13:22:14 · 1431 阅读 · 0 评论 -
Libra源码分析:账号创建流程
1. 引言2. 客户端2.1. 启动客户端2.2. CLI 创建账户2.3. client入口2.4. account命令的执行2.5. create命令的执行2.6. GRPC Client3. 服务端(Validator节点)3.1. Validator入口3.2. AC UpdateToLatestLedger3.3. storage-client3.4....原创 2019-12-03 21:15:00 · 1802 阅读 · 0 评论 -
Quorum新的权限模型
1. 概述2. 新的权限模型概览3. 实现原理4. 启动5. API博客链接:https://hello2mao.github.io/2019/12/02/quorum-permission-model/1. 概述Quorum在最新发布的v2.3.0中增强了区块链的权限模型,详见v.2.3.0在以前的版本中,节点的许可管理是通过静态文件管理的。当节点启动时,如果设置了–...原创 2019-12-03 21:13:34 · 682 阅读 · 0 评论 -
在macOS上运行bitcoin客户端
1. 安装比特币客户端2. 启动客户端,并同步testnet2.1. 新建bitcoin.conf2.2. 启动客户端3. 常用命令3.1. getnetworkinfo3.2. getpeerinfo3.3. getblockchaininfo3.4. listaddressgroupings3.5. listunspent3.6. getwalletinfo...原创 2019-12-03 21:00:49 · 1802 阅读 · 0 评论 -
NEO(小蚁)Seraph ID调研
1. 概述2. 解析2.1. 工作流程2.2. 密码学相关3. 参考1. 概述近日,据外媒报道,NEO 携手瑞士最大的电信运营商瑞士电信(Swisscom)的子公司 Swisscom Blockchain,合作推出 Seraph ID 新技术——一个基于 NEO 底层技术的自主身份(SSI)框架。报道详见:https://cryptoinfos.eu/decentra...原创 2019-12-03 20:56:12 · 331 阅读 · 0 评论 -
ArcBlock Decentralized Identifier 解析
一、背景1.1 ArcBlock1.2 DID1.3 ArcBlock DID二、特性三、产品试用3.1 本地搭建 DApps Workshop3.2 创建 DApp3.3 创建 DID 以及使用 DID四、ArcBlock DID 认证协议4.1 DID Schema4.2 DID Auth 流程4.2.1 获取 Deep Link4.2.2 Req...原创 2019-12-03 20:47:45 · 458 阅读 · 0 评论 -
Hyperledger Fabric v1.1.0 macOS部署开发者环境并创建第一个Fabric网络
一、安装所需软件1.1 安装curlbrew install curl1.1 安装Docker下载并安装Docker for Mac:Docker.dmg1.2 安装Golang1.安装gobrew install go2.设置GOPATHexport GOPATH=$HOME/goexport PATH=$PATH:$GOPATH/b...原创 2018-03-19 22:41:26 · 2888 阅读 · 2 评论 -
使用Helm在k8s集群上部署以太坊私有链
一、概述二、部署流程三、问题记录四、部署检查五、参考一、概述使用k8s官方的包管理工具helm部署以太坊私有链并启动三类节点和一个前端服务:bootnode: used for Geth node discoveryethstats: Ethereum Network Statsgeth-miner: Geth miner nodesgeth-tx:...原创 2018-03-30 00:38:39 · 1621 阅读 · 0 评论 -
区块链词汇表
51%攻击当加密货币网络中超过一半的计算能力由一个单一个体或群组所控制时,如果该个体或群组有恶意的话,他们可能会发出一些相矛盾的交易来破坏网络。地址在网络上发送或接收交易。一个地址通常是以一串字母数字字符的形式呈现。专用集成电路ASIC是‘专用集成电路’的简称。通常,与图形处理器(GPU)相比,ASIC专门用于挖矿,且可能会大大节约能源。比特币比特币是在全球...转载 2018-04-11 14:03:19 · 948 阅读 · 0 评论 -
Solidity生成随机数及其安全性
一、概述使用Solidity编写合约的时候,难免需要随机数,本文记录一种简单的方法,同时也看到此方法存在安全方面的问题。二、随机数简单生成法使用keccak256哈希函数。// 生成一个0到100的随机数:uint randNonce = 0;uint random = uint(keccak256(now, msg.sender, randNonce)) % 100;...原创 2018-04-11 14:40:21 · 8531 阅读 · 0 评论 -
在主网上部署和调用以太坊智能合约
一、概述在主网上部署和调用以太坊智能合约主要分为以下几步: (1)连接主网 (2)部署合约 (3)调用合约二、连接主网通过运行在主网中的节点所提供的RPC连接主网。使用geth命令在本地运行一个连接主网的全节点,geth会尝试持续连接网络上的节点直到找到一个对等体,如果节点运行在一台面向互联网的服务器上,那么节点也会接受来自其它节点的连接请求。需要暴露部分管理API以供合...原创 2018-04-25 09:56:41 · 1832 阅读 · 0 评论 -
从源码解析以太坊地址的生成过程
一、获得一个以太坊钱包地址通过以太坊命令行客户端geth可以很简单的获得一个以太坊地址,如下:[work@host]$ geth account newINFO [05-22|10:17:57] Maximum peer count ETH=25 LES=0 total=25Your new account is locked with ...原创 2018-05-22 11:38:12 · 5403 阅读 · 0 评论 -
以太坊的难度(Difficulty)计算
一、什么是难度难度(Difficulty)一词来源于区块链技术的先驱比特币,用来度量挖出一个区块平均需要的运算次数。难度(Difficulty)通过控制合格的解在空间中的数量来控制平均求解所需要尝试的次数,也就可以间接的控制产生一个区块需要的时间,这样就可以使区块以一个合理而稳定的速度产生。当挖矿的人很多,单位时间能够尝试更多次时,难度就会增大,当挖矿的人减少,单位时间能够尝试的次数变...原创 2018-05-22 22:21:16 · 10369 阅读 · 0 评论 -
以太坊的硬分叉
1.太坊中的硬分叉是什么?硬分叉是一种对以太坊底层协议的改变,为了升级系统来建立新的规则。所有的以太坊客户端都需要被升级;不然他们会被困在一条不被兼容且遵循旧协议的老链。区块链系统的去中心化特性使得硬分叉升级变得困难。在一条区块链中进行硬分叉需要整个社区的合作与沟通,同时也需要各个以太坊客户端的开发者们进行合作,使得整个分叉过程变得流畅。2.作为一个用户,需要做些什么?下载最新版本的以...原创 2018-05-22 22:26:11 · 10603 阅读 · 0 评论 -
预言机(Oracle)
一、概述受限于区块链的共识模型,智能合约只能调用内部合约,无法直接与外部系统进行交互。将智能合约与外部系统打通,有助于区块链技术更进一步扩展应用场景。区块链预言机(Oracle)是区块链与外部世界交互的一种实现机制,它在区块链与外部世界间建立一种可信任的桥接机制,使得外部数据可以安全可靠地进入区块链。1.1、为什么需要区块链上的智能合约和去中心化应用(Dapp)对外界数据拥有交互需求当智...原创 2019-07-17 09:51:00 · 10920 阅读 · 0 评论 -
区块链基础架构模型
一、简单3层架构Ref:http://www.8btc.com/ebook-blockchain 二、6层架构Ref: (1)http://blog.csdn.net/qq_35624642/article/details/78138077 (2)http://blog.csdn.net/csolo/article/details/52858236 区块链技术的模型是由...转载 2018-03-16 00:12:34 · 16436 阅读 · 1 评论