<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HeYuanxun 的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DAOSHUXINDAN</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DAOSHUXINDAN]]></copyright><item><title><![CDATA[恢复 Substrate 链: unexpected epoch changes]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/126541054</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/126541054</guid><author>DAOSHUXINDAN</author><pubDate>Fri, 26 Aug 2022 16:05:30 +0800</pubDate><description><![CDATA[Babe 无法正常工作是因为，在最后出块的下一个 epoch 内，没有正常出块，那么如果所有的验证者节点把系统时间调整到最后出块的时间，理论上就可以让链恢复工作了。正常情况下，区块链和外部时间是一致的，人为的让区块链回到历史时间（最后出块时间），再以加速的时间流逝赶上外部世界的时间。这种方式的原理是通过 rpc 接口（或者状态数据库）获取到最后正常区块高度下的状态数据，生成一个新的创世块，基于新的创世块运行链。：即时间扭曲的倍数，对应被压缩的是出块时间，合理设置自己的倍数；这里我们修改为两倍速运行。...]]></description><category></category></item><item><title><![CDATA[再议 Send，Sync]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/108311793</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/108311793</guid><author>DAOSHUXINDAN</author><pubDate>Wed, 02 Sep 2020 18:04:43 +0800</pubDate><description><![CDATA[问题起因

想要通过 trait object 调用 Trait 中定义的 async method(s) (async fn 通过 async-trait 模拟实现)
示例代码如下
use async_std::task;
use async_trait::async_trait;

#[async_trait]
trait Foo {
    async fn foo(&amp;self);
}

struct A;

#[async_trait]
impl Foo for A {
    async ]]></description><category></category></item><item><title><![CDATA[Hyperledger Burrow StateDB]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/105425995</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/105425995</guid><author>DAOSHUXINDAN</author><pubDate>Fri, 10 Apr 2020 12:04:05 +0800</pubDate><description><![CDATA[文章目录1. 存储结构1.1 Plain1.2 Tree1.3 Commit2. 代码结构
Burrow 借助 Tendermint 管理 p2p 网络和区块共识，在 Tendermint 之外自己维护了一个 StateDB 存储 Burrow 中各种交易的状态数据。
1. 存储结构

Burrow 在 KV DB 之上通过前缀的形式划分出了多个用途的空间，主要有三大类

1.1 Plain

这...]]></description><category></category></item><item><title><![CDATA[Ethereum Service 机制]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/105134916</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/105134916</guid><author>DAOSHUXINDAN</author><pubDate>Fri, 27 Mar 2020 12:19:12 +0800</pubDate><description><![CDATA[go-ethereum v1.19.12

1. Service

Service 抽象两类功能的集合：
Protocol ：p2p 节点间交互协议
API ：为客户端提供的 RPC 接口
service 接口定义 service.go
// Service is an individual protocol that can be registered into a node.
//
// N...]]></description><category></category></item><item><title><![CDATA[IPFS 命令示例]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/105104100</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/105104100</guid><author>DAOSHUXINDAN</author><pubDate>Wed, 25 Mar 2020 22:42:59 +0800</pubDate><description><![CDATA[0. 准备

下载 IPFS 最新 Release 版 v0.4.23，解压放入某 $PATH 下，这里放在一个零时目录下。
version=v0.4.23
platform="$(uname -s | tr '[:upper:]' '[:lower:]')-$(if [[ $(uname -m) == 'x86_64' ]]; then echo amd64; else echo 386; fi...]]></description><category></category></item><item><title><![CDATA[Hyperledger Fabric 2.0 Gossip]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104944649</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104944649</guid><author>DAOSHUXINDAN</author><pubDate>Sun, 22 Mar 2020 16:28:29 +0800</pubDate><description><![CDATA[本文基于 Fabric v2.0.1

一、Gossip 简介

参见 Gossip 协议
二、Gossip 在 Fabric 中的应用

Fabric 使用 Gossip 作为 Peer 间的数据共享网络。在其上划分 Channel 进行消息交换，主要用于 Fabric 网络成员发现、组织内区块数据交换、私有数据的分发、及同步 Peer Channel 当前状态等。
Peer 间建立连接时握手...]]></description><category></category></item><item><title><![CDATA[Hyperledger Fabric 2.0 Chaincode Dev]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104924631</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104924631</guid><author>DAOSHUXINDAN</author><pubDate>Wed, 18 Mar 2020 12:11:53 +0800</pubDate><description><![CDATA[基于 Fabric v2.0.1，以前的版本应该也能通用。

一、准备工作

Fabric Network

单节点 Peer
单节点 Orderer
已经创建的Channel
Peer Join 该 Channel

Mac or Linux 环境可以快速基于脚本搭建 Fabric Debug 环境
二、以 Dev 模式启动 Peer

启动 Peer 时带上 dev mode 标识，通过命令...]]></description><category></category></item><item><title><![CDATA[JetBrains 系IDE debug传递JSON字符串参数问题]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104929176</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104929176</guid><author>DAOSHUXINDAN</author><pubDate>Tue, 17 Mar 2020 19:39:06 +0800</pubDate><description><![CDATA[遇到问题版本：GoLand 2019.3

调试模式启动时，传递 json 字符串遇到问题
需要这样的参数
chaincode query -c '{"Args":["query","a"]}'
直接传递“"”会被去掉变成下面这样
chaincode query -c '{Args:[query,a]}'
正确方式
chaincode query -c "{\"Args\":[\"query\"...]]></description><category></category></item><item><title><![CDATA[Hyperledger Fabric 2.0 Endorser]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104783060</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104783060</guid><author>DAOSHUXINDAN</author><pubDate>Sun, 15 Mar 2020 18:01:07 +0800</pubDate><description><![CDATA[本文基于 Fabric v2.0.1
Fabric 中所有与链相关的操作都通过 Chaincode 实现，Chaincode 管理本身也不例外。为了实现相应功能 Fabric 提供了内置的系统 Chaincode ：

cscc ：the configuration handler for the peer
qscc ：the ledger query functions
lscc ：chainc...]]></description><category></category></item><item><title><![CDATA[Hyperledger Fabric 2.0 chaincode lifecycle]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104829917</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104829917</guid><author>DAOSHUXINDAN</author><pubDate>Sat, 14 Mar 2020 15:15:01 +0800</pubDate><description><![CDATA[bin/configtxgen -profile SampleDevModeSolo -channelID sys-channel -outputBlock ./channel-artifacts/genesis.block

bin/configtxgen -profile SampleSingleMSPChannel -outputCreateChannelTx ./channel-artif...]]></description><category></category></item><item><title><![CDATA[Hyperledger Fabric 2.0 external builder]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104814621</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104814621</guid><author>DAOSHUXINDAN</author><pubDate>Thu, 12 Mar 2020 14:46:25 +0800</pubDate><description><![CDATA[Fabric 2.0 除了原有的 docker builder 之外新增了 external builder ，一个 external builder 的实现提供 detect、build、release、run 可执行命令。

detect ：接受两个参数source dir、metadata dir，用于探测客户端提交的 chaincode 是否可用此 builder 处理
build ：接受...]]></description><category></category></item><item><title><![CDATA[Hyperledger Fabric 2.0 debug 环境准备]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104812206</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104812206</guid><author>DAOSHUXINDAN</author><pubDate>Thu, 12 Mar 2020 10:59:56 +0800</pubDate><description><![CDATA[环境

Fabric v2.0.1
go version go1.13.7 darwin/amd64
GoLand 2019.3
转换为 go module

到目前为止 Fabric 还没有启用 go module 管理依赖，首先将工程转换为 go module 工程。
go mod init 会根据 Gopkg.toml、Gopkg.lock 生成依赖并添加到 go.mod 中，期间会访问 g...]]></description><category></category></item><item><title><![CDATA[Hyperledger Fabrica 2.0 MSP & BCCSP]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104759019</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104759019</guid><author>DAOSHUXINDAN</author><pubDate>Tue, 10 Mar 2020 12:16:34 +0800</pubDate><description><![CDATA[本文基于 fabric v2.0.1，以 peer 节点启动为例讲述 localmsp、bccsp 初始化过程。
一、BCCSP

BCCSP 是 Blockchain Cryptographic Service Provider 的简称，是常用区块链密码学算法的抽象表示。包含 Hash、加解密、签名、验签 等。
在 Fabric 中提供两种实现方式，一种为 SW (Software) 即纯 Go...]]></description><category></category></item><item><title><![CDATA[Hyperledger Fabric 2.0 gRPC接口]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104668870</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104668870</guid><author>DAOSHUXINDAN</author><pubDate>Thu, 05 Mar 2020 15:02:01 +0800</pubDate><description><![CDATA[本文基于 Fabric v2.0.1 ，与 v1.x 版不同，v2 版将 protos 定义放到一个独立仓库 fabric-protos  进行管理，并且使用 protoc 工具生成的具体语言代码也使用独立的仓库存放，如 golang 版 fabric-protos-go。
一、 Orderer
1. AtomicBroadcast
服务定义于 orderer/ab.proto
service A...]]></description><category></category></item><item><title><![CDATA[编译Filecoin]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104650467</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104650467</guid><author>DAOSHUXINDAN</author><pubDate>Wed, 04 Mar 2020 12:19:54 +0800</pubDate><description><![CDATA[filecoin 编译过程中需要下载 proof-params 文件，默认从 IPFS官方网关(https://ipfs.io/ipfs/) 拉取，可通过环境变量IPFS_GATEWAY自定义，见 go-paramfetch
期间还需要从github下载 filecoin-ffi release tarball，见 install-filecoin ，可能会被墙，通过环境变量HTTPS_PROXY...]]></description><category></category></item><item><title><![CDATA[IPFS WebUI]]></title><link>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104627326</link><guid>https://blog.youkuaiyun.com/DAOSHUXINDAN/article/details/104627326</guid><author>DAOSHUXINDAN</author><pubDate>Tue, 03 Mar 2020 12:11:47 +0800</pubDate><description><![CDATA[基本信息
IPFS 版本：v0.4.23
WebUI 版本: v2.7.2
服务端设置
WebUI 使用独立仓库管理，最新版直接发布到 IPFS 网络上，在IPFS实现代码中引用相应CID，如在 go-ipfs 中的webui.go所示。
daemon.go
// serveHTTPApi collects options, creates listener, prints status mess...]]></description><category></category></item></channel></rss>