随笔分类 - 区块链
区块链相关原理学习
摘要:x509证书扩展项(SubjectAlternativeName) 参考资料 x509证书扩展项(SubjectAlternativeName) SubjectAlternativeName是x509 x3中的一个扩展项,该扩展项用于标记和界定证书持有者的身份。 对于证书持有者,一般使用Subjec
阅读全文
摘要:x509证书格式 参考资料 x509证书格式 X.509是国际电信联盟-电信(ITU-T)部分标准和国际标准化组织(ISO)的证书格式标准。 使用ASN.1描述,我们可以将其抽象为以下结构。 Certificate::=SEQUENCE{ tbsCertificate TBSCertificate,
阅读全文
摘要:密钥存储格式标准 PKCS#8 RSA密钥存储格式 ECC私钥存储格式 参考资料 密钥存储格式标准 密钥的存储需要标准来规范,比如存储字段的格式,包含哪些内容。比如对于ECC私钥来说就需要存储曲线的参数,不然别人拿到私钥怎么知道你是基于哪条椭圆曲线计算呢,除非你们事先约定好用固定的一条椭圆曲线。 T
阅读全文
摘要:ECC 椭圆曲线 椭圆曲线上的阿贝尔群 椭圆曲线的参数 有限域 子群的基准点和子群的阶 子群的协因子 常用椭圆曲线参数 secp256k1 secp256r1 ECDSA算法 生成密钥对(genKey) 加密(encrypt) 解密(decrypt) 签
阅读全文
摘要:链码是什么 链码是一个程序,可以使用 Go 、node.js 、 或者 Java 来实现预定义的接口。链码运行在一个和背书节点进程相 隔离的安全的容器中。通过应用程序提交交易来初始化链码和管理账本状态。 一个链码一般用来处理由网络中成员一致认可的商业逻辑,所以可以认为它就是一个“智能合约”。 链码创
阅读全文
摘要:proposal PROPOSE消息的格式是<PROPOSE,tx,[anchor]>,tx 是必选参数而 anchor 是可选参数,解释如下: tx=<clientID,chaincodeID,txPayload,timestamp,clientSig> clientID:提交客户端的ID。 ch
阅读全文
摘要:链码 Fabric的智能合约称为链码(chaincode),分为系统链码和用户链码。系统链码用来实现系统层面的功能,用户链码实现用户的应用功能。链码被编译成一个独立的应用程序,运行于隔离的Docker容器中。 和以太坊相比,Fabric链码和底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当
阅读全文
摘要:cryptogen 简单的说,cryptogen是用来生产fabric需要的证书的;这个生产过程是静态的。 和cryptogen工具对等的是CA服务,是一种动态的证书生产环境;在开发和测试阶段,在环境中不需要部署CA,因此可以简单的使用cryptogen工具,当然在运行环境中也可以不使用CA服务器,
阅读全文
摘要:fabric架构 节点类型 客户端:应用程序、SDK、命令行 CA证书(可选):负责对网络中所有的证书进行管理,提供标准的PKI服务;只有被ca认可的身份才能在链里交易。 Orderer - 排序节点:对所有发往网络的交易进行排序,将排序后的交易按照配置中的约定整理为区块之后提交给确认节点进行处理。
阅读全文
摘要:fabric模块化结构 安装fabric-samples 安装1.4版本,对于安装了docker for mac的机器,先切换到/Users, /Volumes, /private, or /tmp目录下(可以是下面的子目录,为什么?因为docker只允许挂载到这些制定的目录下) git clone
阅读全文
摘要:X.509 X.509是证书格式标准,定义了公钥证书结构的基本标准。证书组成结构标准用ASN.1(一种标准的语言)来进行描述. X.509 v3数字证书结构如下: 证书 - ... - 公钥算法 - 主题公钥 - 此日期前无效 - 此日期后无效 - 版本号 - 序列号 - 签名算法 - 颁发者 -
阅读全文
摘要:RAFT简介 Raft(Replication and Fault Tolerant)是一个允许网络分区(Partition Tolerant)的一致性协议,它保证了在一个由N个节点构成的系统中有(向上取整)个节点正常工作的情况下的系统的一致性,比如在一个5个节点的系统中允许2个节
阅读全文
摘要:gossip协议 gossip是流言,绯闻的意思,起这个名字就是因为算法的流程就类似于流言的传播,利用一种随机、带有传染性的方式,将信息传播到整个网络中,最终整个网络的状态达到一致。 gossip分为两种: anti-entropy(反熵):只要数据不同步,就开始同步数据 rumor mongeri
阅读全文
摘要:布隆过滤器 布隆过滤器(Bloom Filter)是由布隆( Burton Howard Bloom)在1970年提出的算法:是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假
阅读全文
摘要:RSA RSA公私钥生成步骤 RSA加解密步骤 RSA安全性 参考资料 RSA 1977年,三位数学家Rivest、Shamir和Adleman设计了一种算法,可以实现非对称加密。算法用他们三个人的名字命名,叫做RSA算法。 RSA算法的安全性是基于判断一个数是否为质数很简单,但是要对一个数进行质因
阅读全文
摘要:Solidity——特殊变量与函数 特殊变量与函数 类型 含义 对应字节码 说明 block.number uint 当前区块编号 NUMBER block.difficulty uint 当前区块难度 DIFFICULTY block.coinbase address 当前区块矿工地址 COINB
阅读全文
摘要:以太坊nonce 为了防止交易重复进行,以太坊要求每笔交易必须有一个nonce数值。nonce值从0开始递增,外部账户每发送一笔交易,nonce便加1。 以太坊处理nonce的规则: 当nonce太小(小于当前的nonce值),交易会被直接拒绝 当 nonce 太大,大于当前 nonce,交易会一直
阅读全文
摘要:RLP RLP(Recursive Length Prefix)递归长度前缀编码,是由以太坊提出的序列化/反序列化标准,相比json格式体积更小,相比protobuf对多语言的支持更强。 RLP将数据分为两类: 字符串 列表(可以包含字符串和列表) 编码规则 字符串长度是1,并且值属于[0x00,
阅读全文
摘要:ethash ethash(eth+hash)是以太坊设计的挖矿算法,为了实现ASIC-resistance,ethash依赖于对内存资源的访问,是一种memory-hard函数。同时为了支持轻节点对区块进行验证,专门设计了cache和dataset一小一大的数据集,小的cache用于验证,大的da
阅读全文