Go语言中文网 为您找到相关结果 608

兄弟连区块链教程btcpool矿池源码分析BlockMaker模块解析

btcpool矿池-BlockMaker模块解析 核心机制总结 blkmaker可以连多个bitcoind节点 blkmaker监听和接收4类消息:RAWGBT、STRATUM_JOB、SOLVED_SHARE和NMC_SOLVED_SHARE 监听RAWGBT目的为获取gbtHash/交易列表,用于构建Block,gbtHash和vtxs写入rawGbtMap_ * rawGbtMap_保存最近100条gbtHash/vtxs对 监听STRATUM_JOB目的为获取jobId_/gbtHash,jobId_和gbtHash写入jobId2GbtHash_ * jobId2GbtHash_保存最近120条jobId_/gbtHash对 监听SOLVED_SHARE目的为获取BlockHead...阅读全文

博文 2018-10-16 17:34:39 兄弟连区块链培训

兄弟连区块链培训带你实战GO案例(49)Go 时间

Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。不仅可以开发web,可以开发底层,目前知乎就是用golang开发。区块链首选语言就是go,以-太坊,超级账本都是基于go语言,还有go语言版本的btcd. 兄弟连Go全栈与区块链培训课程共计22周学习时长,划分为9个学习阶段,即区块链主流语言-Go语言开发实战、区块链后端技术体系-Go语言高并发和服务器开发、Go开发区块链公链(区块链密码学、分布式编程、共识算法、基本概念,Golan公链开发)、以-太坊与智能合约与DAPP开发、区块链分布式应用开发、区块链系统框架开发-超级账本与区块链3.0EOS、Go与区块链面试...阅读全文

博文 2018-07-30 15:34:54 Delete_88c3

兄弟连区块链教程eth源码解析区块数据结构

兄弟连区块链教程eth源码解析区块数据结构,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。在区块链中,区块是存储有价值信息的块。这是任何一种加密货币的本质。除此之外,区块还包含一些技术信息,比如它的版本、当前时间戳和前一区块的散列值(哈希值)Block(区块)是Ethereum的核心数据结构之一* 所有账户的相关活动,以交易(Transaction)的格式存储,每个Block有一个交易对象的列表* 每个交易的执行结果,由一个Receipt对象与其包含的一组Log对象记录* 所有交易执行完后生成的Receipt列表,存储在Block中(经过压缩加密)* 不同Bl...阅读全文

博文 2018-10-16 18:34:41 兄弟连区块链培训

golang[43]-blockchain-serialize

真实比特币序列化1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374package mainimport ( "bytes" "encoding/binary" "log" "fmt" "encoding/hex" "crypto/sha256")//将类型转化为了字节数组func IntToHex(num int32) []byte{ buff := new(bytes.Buffer)//binary.LittleEndian 小端模式 err:= binary.Wr...阅读全文

博文 2018-12-13 23:35:58 jonson_jackson

兄弟连区块链技术Go语言教程多文件下载和上传

所有的新技术都经历了一些成长的痛苦,区块链技术也一样。但是,尽管它还处于发展的早期阶段,但它具有改进许多行业、许多应用和系统的巨大潜力。 Go语言具有其关键特性。Go语言之所以如此强大,是因为它在服务端的开发中总能抓住程序员的痛痒需求,用最直接、简单、高效、稳定的方式来解决并实现问题。 package mainimport ("net/http""os""io""strconv")func main() {f, err := os.OpenFile("K:/file.mp3", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)stat, err := f.Stat() //获取文件状态if err != nil { panic(err) } //把文件指针指到...阅读全文

博文 2018-08-24 17:35:09 兄弟连区块链培训

兄弟连区块链教程Fabric1.0源代码分析Tx RWSet(读写集)

区块链教程Fabric1.0源代码分析Tx RWSet(读写集),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 # Fabric 1.0源代码笔记 之 Tx #RWSet(读写集) ## 1、RWSet概述 在背书节点模拟Transaction期间,为交易准备了一个读写集合。 Read Set包含模拟Transaction读取的Key和版本的列表,Write Set包含Key、写入的新值、以及删除标记(是否删除Key)。 RWSet相关代码分布在protos/ledger/rwset、core/ledger/kvledger/txmgmt/rwsetutil...阅读全文

博文 2018-11-08 15:33:24 ITXDL

{区块链教程}以太坊源码分析fast sync算法二

兄弟连区块链教程以太坊源码分析fast sync算法二:上面的表格应该这样解释:如果我们每隔K个区块头验证一次区块头,在N个区块头之后,伪造的概率小于攻击者产生SHA3冲突的概率。这也意味着,如果确实发现了伪造,那么最后的N个头部应该被丢弃,因为不够安全。可以从上表中选择任何{N,K}对,为了选择一个看起来好看点的数字,我们选择N = 2048,K = 100。后续可能会根据网络带宽/延迟影响以及可能在一些CPU性能比较受限的设备上运行的情况来进行调整。 Using this caveat however would mean, that the pivot point can be considered secure only after N headers have been impor...阅读全文

博文 2018-10-26 16:34:48 兄弟连区块链培训

兄弟连区块链培训分享Go语言获取变量数据类型

“区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。如果某个函数的入参是interface{},有下面几种方式可以获取入参的方法:import "fmt"func main() { v := "hello world" fmt.Println(typeof(v))}func type...阅读全文

博文 2018-08-21 14:34:50 兄弟连区块链培训

加密货币的本质

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 去年,比特币暴涨,其他币也像雨后春笋一样冒出来,已经有1000多种了。 很多人都在问,加密货币(cryptocurrency)的时代,真的来临了吗?将来会不会人类不再使用美元、人民币,改用加密货币?那么多品种,我应该使用哪一种币?要不要现在就去投资一些? 这些问题的答案,我也想知道,就花了很多时间查阅资料、研究协议。前两周发表的《区块链入门教程》和《比特币入门教程》,是我的学习心得。但是,那两篇教程主要介绍基本概念、探讨协议的可行性,没回答一个根本的问题:加密货币到底是什么? 下面就是我对这个问题的思考。阅读之前,如果你已经了解区块链和比特币,那很好;如果不了解,也没关系,本文不涉及技术,只讨论最基本的原理。 一...阅读全文

兄弟连区块链教程以太源码分析accounts账户管理分析

兄弟连区块链教程以太源码分析accounts账户管理分析。 数据结构分析 ETH的账户管理定义在accounts/manager.go中,其数据结构为: // Manager is an overarching account manager that can communicate with various// backends for signing transactions.type Manager struct {backends map[reflect.Type][]Backend // Index of backends currently registeredupdaters []event.Subscription // Wallet update subscriptions...阅读全文

博文 2018-10-17 15:34:40 兄弟连区块链培训

区块链入门教程以太坊源码分析p2p-dial.go源码分析

兄弟连区块链入门教程以太坊源码分析p2p-dial.go源码分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。dial.go在p2p里面主要负责建立链接的部分工作。 比如发现建立链接的节点。 与节点建立链接。 通过discover来查找指定节点的地址。等功能。dial.go里面利用一个dailstate的数据结构来存储中间状态,是dial功能里面的核心数据结构。 // dialstate schedules dials and discovery lookups. // it get's a chance to compute new tasks on ev...阅读全文

博文 2018-10-24 15:34:47 兄弟连区块链培训

兄弟连区块链教程eth源码分析p2p-udp.go源码分析(一)

兄弟连区块链教程eth源码分析p2p-udp.go源码分析(一),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。p2p的网络发现协议使用了Kademlia protocol 来处理网络的节点发现。节点查找和节点更新。Kademlia protocol使用了UDP协议来进行网络通信。阅读这部分的代码建议先看看references里面的Kademlia协议简介来看看什么是Kademlia协议。首先看看数据结构。 网络传输了4种数据包(UDP协议是基于报文的协议。传输的是一个一个数据包),分别是ping,pong,findnode和neighbors。 下面分别定义...阅读全文

博文 2018-10-17 17:34:42 兄弟连区块链培训

兄弟连区块链教程以太坊源码分析core-state-process源码分析

StateTransition 状态转换模型 /* The State Transitioning Model 状态转换模型 A state transition is a change made when a transaction is applied to the current world state 状态转换 是指用当前的world state来执行交易,并改变当前的world state The state transitioning model does all all the necessary work to work out a valid new state root. 状态转换做了所有所需的工作来产生一个新的有效的state root 1) Nonce handlin...阅读全文

博文 2018-10-22 15:34:38 兄弟连区块链培训

兄弟连区块链教程以太坊源码分析core-state-process源码分析(二)

兄弟连区块链教程以太坊源码分析core-state-process源码分析(二):关于g0的计算,在黄皮书上由详细的介绍和黄皮书有一定出入的部分在于if contractCreation && homestead {igas.SetUint64(params.TxGasContractCreation) 这是因为 Gtxcreate+Gtransaction = TxGasContractCreation func IntrinsicGas(data []byte, contractCreation, homestead bool) *big.Int { igas := new(big.Int) if contractCreation && homestead { igas.SetUint6...阅读全文

博文 2018-10-22 16:35:00 兄弟连区块链培训

Tikye(TIY)知识科普之技术架构

设计思路考虑到Tikye对于区块链系统的性能、安全等需求远比一般的公有链性能更高,为了保证交易场景下的公开透明,交易各方皆能参与到区块链的共同监管与治理,同时能兼顾高频交易需要较高的TPS,我们设计了一套支持可插拔、可扩展的高性能应用级区块链系统。在下文中,该区块链系统简称Tikye。该系统为开发者提供便捷的SDK工具包,同时还将为外部系统提供可兼容的API接口,基于Tikye的特性解决传统问题。主要依靠智能合约来解决基于Tikye的事务性问题,智能合约在区块链环境中运行,保证了事务执行的可行性、高效性和安全性。为了区块链系统的处理能力,我们通过引入多条平行链组成链路由系统。平行链和主链保持既独立又统一的关系,所有平行链可以拥有自己的超级节点、状态机和原始交易数据,由主链来存储关键数据以及完...阅读全文

博文 2019-09-19 11:02:46 逗币狗

兄弟连区块链教程btcpool矿池源码分析slparser

btcpool矿池-slparser(share log parser)模块解析 核心机制总结 支持三种功能: 指定Date和UID,将打印指定日期指定用户的share信息到stdout UID=0时,将打印指定日期所有用户的share信息 指定Date但未指定UID,读取指定日期sharelog,统计数据并写入数据库 按Worker、user、pool三个维度统计:Accept1h、Accept1d、score1h、score1d、Reject1h、Reject1d 数据库仅保留最近3个月统计数据 如果Date和UID均未指定,将监听文件变化,读取share并统计数据,每15秒写入数据库 同时启动Httpd服务,开放ServerStatus和WorkerStatus slparser命令使...阅读全文

博文 2018-10-26 15:34:41 兄弟连区块链培训

兄弟连区块链教程Fabric1.0源代码分析configupdate处理通道配置更新

区块链教程Fabric1.0源代码分析configupdate处理通道配置更新,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之 Orderer #configupdate(处理通道配置更新) 1、configupdate概述 configupdate,用于接收配置交易,并处理通道配置更新。相关代码在orderer/configupdate目录。 2、SupportManager接口定义及实现 2.1、SupportManager接口定义 type SupportManager interface { GetChain(cha...阅读全文

博文 2018-11-05 15:35:07 兄弟连区块链培训

区块链教程Fabric1.0源代码分析流言算法Gossip服务端一

区块链教程Fabric1.0源代码分析流言算法Gossip服务端一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之 gossip(流言算法) #GossipServer(Gossip服务端) 1、GossipServer概述 GossipServer相关代码,分布在protos/gossip、gossip/comm目录下。目录结构如下: protos/gossip目录: * message.pb.go,GossipClient接口定义及实现,GossipServer接口定义。 gossip/comm目录: * comm.go...阅读全文

博文 2018-10-31 17:34:41 兄弟连区块链

兄弟连区块链教程btcpool矿池源码分析BlockMaker模块解析

兄弟连区块链教程btcpool矿池源码分析BlockMaker模块解析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。# btcpool矿池-BlockMaker模块解析## 核心机制总结* blkmaker可以连多个bitcoind节点* blkmaker监听和接收4类消息:RAWGBT、STRATUM_JOB、SOLVED_SHARE和NMC_SOLVED_SHARE* 监听RAWGBT目的为获取gbtHash/交易列表,用于构建Block,gbtHash和vtxs写入rawGbtMap_* rawGbtMap_保存最近100条gbtHash/vtxs对*...阅读全文

博文 2018-10-16 18:34:41 兄弟连区块链培训

兄弟连区块链教程以太坊源码分析chain-indexer区块链索引二

Start方法。 这个方法在eth协议启动的时候被调用,这个方法接收两个参数,一个是当前的区块头,一个是事件订阅器,通过这个订阅器可以获取区块链的改变信息。 eth.bloomIndexer.Start(eth.blockchain.CurrentHeader(), eth.blockchain.SubscribeChainEvent) // Start creates a goroutine to feed chain head events into the indexer for // cascading background processing. Children do not need to be started, they // are notified about new e...阅读全文

博文 2018-10-19 11:34:46 兄弟连区块链培训

兄弟连区块链技术培训分享Go语言之时间编程

互联网二十多年,已到十字路口。区块链出现前的互联网被称为古典互联网,而应用区块链技术的互联网才进入了后互联网时代。作为一项新兴的技术,区块链无疑正处于风口浪尖之上,其发展前景于普通大众而言也终将是利好。但目前由于区块链技术处于发展早期阶段,存在技术成熟度、落地应用场景有限等问题,兄弟连教育建议用户在选择专业Go语言+区块链培训机构前应进行仔细考量与辨别。编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔,本文简单的讲讲go的时间相关的编程,比较简单。golang对时间的支持,是package time做的事儿,里面有好多的函数。熟悉Linux下C编程的就是time函数的返回值: #include time_t now = time(NULL);g...阅读全文

博文 2018-08-27 11:34:58 兄弟连区块链培训

区块链教程Fabric1.0源代码分析Fabric1.0.4go代码量统计

区块链教程Fabric1.0源代码分析Fabric1.0.4go代码量统计,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之Fabric 1.0.4 go代码量统计 1、概述 除test、vendor、mocks、example、protos外,go核心代码文件341个,核心代码行63433行。 find ./ |grep -vE 'test|vendor|mocks|example|protos' | grep '\.go$' | wc -l 341 wc -l `find ./ |grep -vE 'test|vendor...阅读全文

博文 2018-11-09 16:36:00 xdl区块链

区块链教程Fabric1.0源代码分析blockfile区块文件存储2

//构造blockIndex func newBlockIndex(indexConfig *blkstorage.IndexConfig, db *leveldbhelper.DBHandle) *blockIndex //获取最后一个块索引(或编号),取key为"indexCheckpointKey"的值,即为最新的区块编号 func (index *blockIndex) getLastBlockIndexed() (uint64, error) func (index *blockIndex) indexBlock(blockIdxInfo *blockIdxInfo) error //索引区块 //根据区块哈希,获取文件区块指针 func (index *blockIndex) g...阅读全文

博文 2018-10-11 15:35:09 兄弟连区块链培训

兄弟连区块链培训分享Go语言压缩与解压

2018年第一季度,区块链相关人才的招聘需求已达到2017年同期的9.7倍,发布区块链相关岗位的公司数量同比增长4.6倍。 兄弟连教育Go全栈与区块链培训课程是由清华、微软和谷歌名师历时半年时间研发出的独一无二的体系化课程。压缩文件package mainimport ( "fmt" "os" "io" "archive/tar" "compress/gzip")func main() { // file write fw, err := os.Create("tar/lin_golang_src.tar.gz") if err != nil { panic(err) } defer fw.Close() // gzip write gw := gzip.NewWriter(fw) defe...阅读全文

博文 2018-08-29 16:35:06 兄弟连区块链培训

以太坊源码分析:fetcher模块和区块传播

前言 这篇文章从区块传播策略入手,介绍新区块是如何传播到远端节点,以及新区块加入到远端节点本地链的过程,同时会介绍fetcher模块,fetcher的功能是处理Peer通知的区块信息。在介绍过程中,还会涉及到p2p,eth等模块,不会专门介绍,而是专注区块的传播和加入区块链的过程。 当前代码是以太坊Release 1.8,如果版本不同,代码上可能存在差异。 总体过程和传播策略 本节从宏观角度介绍,节点产生区块后,为了传播给远端节点做了啥,远端节点收到区块后又做了什么,每个节点都连接了很多Peer,它传播的策略是什么样的? 总体流程和策略可以总结为,传播给远端Peer节点,Peer验证区块无误后,加入到本地区块链,继续传播新区块信息。具体过程如下。 先看总体过程。产生区块后,miner模块会发...阅读全文

博文 2018-11-17 13:34:43 大彬

兄弟连区块链入门教程以太坊源码分析以太坊随机数生成方式二

区块链入门教程以太坊源码分析以太坊随机数生成方式二。激励 RNG的周期非常短,例如一个小时20个生成周期,如果没有周期的利润是0.001%,一个月的盈利会达到0.00001 20 24 30 = 0.144。 为了达到14.4%每个月的盈利,并且RNG平均有n个参与者,运行智能合约C的费用为 n 3 500 gasPrice + Ccost.(CCost是合约内部的gas消费,包括计算和存储)假设每个随机值平均有r个请求,每个请求的费用是 p ETH, 那么收入是 rp. 所以每个参与者每一次参与会收到rp - 1500n gasPrice - Ccost) / n。当前的gasPrice是10 szabo, 合约的消费大概是1500n gas, 所以大概的净收入是(rp/n-0.03)ET...阅读全文

博文 2018-10-26 16:34:49 兄弟连区块链培训

兄弟连区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一

区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 # Fabric 1.0源代码笔记 之 Tx(Transaction 交易) ## 1、Tx概述 Tx,即Transaction,交易或事务。 Tx代码分布目录结构如下: * protos/common/common.pb.go,交易的封装即Envelope结构体。也包括Payload、Header、ChannelHeader和SignatureHeader。 * protos/utils目录,交易相关部分工具函数,包括txutils....阅读全文

博文 2018-11-08 15:52:38 ITXDL

千锋扣丁学堂浅谈为什么区块链用go语言开发

今天千锋扣丁学堂区块链培训老师给大家分享一篇关于为什么区块链用go语言开发?首先Go语言现在常常被用来做去中心化系统(decentralisedsystem)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(benchmark)了C,C++,Java,甚至NodeJs,我们也试着用一些算法来作为考量标准。而现在,我表示我们正在用Go来实现此目标,并且感觉不错。现在建造一个区块链,恰如当时建造一个操作系统,我们在建造像区块链平台这样复杂的东西时,把注意力放在了那些核心问题上。经过差不多4周的开发与探索,我们才发现这门奇妙的语言是如何优雅地解答了我们的难题。Go语言很简单。并且每次你中途休息(cessation)之后...阅读全文

博文 2019-07-02 19:32:40 扣丁学堂

Go 通道

无缓冲区通道 通过make(chan xxx)创建,没有设置缓冲区大小,这种类型的通道会在两种情况下导致阻塞: 通道中无数据,但执行通道读操作。 执行通道写操作,但是无协程从通道中读取数据。 // 情况1 func ReadNoDataFromNoBufCh() { noBufCh := make(chan int) <-noBufCh println("read from no buffer channel success") } // 情况2 func WriteNoBufCh() { ch := make(chan int) ch <- 1 println("write success no block") } 有缓冲区通道 通过make(chan xxx, int)创建,并设置了缓冲...阅读全文

博文 2020-03-08 13:32:39 xiongkun01

为什么区块链是不可篡改的

区块链的数据结构是由包含事务信息的块按远近顺序排列的。块按远近顺序在这个链中链接,每个块都指向前面的块。 区块链通常被视为一个垂直堆栈,第一个块是堆栈底部的第一个块,然后将每个块放在前一个块的顶部。使用堆栈将块依次堆叠的概念可视化之后,我们可以使用一些术语,如“高度”来表示块与第一个块之间的距离;和“top”或“top”表示新添加的块。 每个块头生成一个SHA256加密散列来生成散列值。使用这个散列值,可以标识区块链中相应的块。同时,每个块可以通过其块头的“父块哈希值”字段引用前一个块(父块)。更多区块链知识 也就是说,每个块头包含其父块散列值。这样,通过将每个块链接到相应父块的散列序列,就创建了一个返回到第一个块(创建块)的链。 虽然每个块只有一个父块,但它可以临时有多个子块。每个子块具有...阅读全文

博文 2019-11-21 16:02:41 真是很秃ran

区块链教程区块链信息安全3椭圆曲线加解密及签名算法的技术原理二

兄弟连区块链教程区块链信息安全3椭圆曲线加解密及签名算法的技术原理二。 # 椭圆曲线加解密及签名算法的技术原理及其Go语言实现 ### 椭圆曲线加解密算法原理 建立基于椭圆曲线的加密机制,需要找到类似RSA质因子分解或其他求离散对数这样的难题。 而椭圆曲线上的已知G和xG求x,是非常困难的,此即为椭圆曲线上的的离散对数问题。 此处x即为私钥,xG即为公钥。 椭圆曲线加密算法原理如下: 设私钥、公钥分别为k、K,即K = kG,其中G为G点。 公钥加密: 选择随机数r,将消息M生成密文C,该密文是一个点对,即: C = {rG, M+rK},其中K为公钥 私钥解密: M + rK - k(rG) = M + r(kG) - k(rG) = M 其中k、K分别为私钥、公钥。 ### 椭圆曲线签名...阅读全文

博文 2018-11-09 14:17:07 ITXDL

兄弟连区块链教程以太坊源码分析chain-indexer区块链索引一

chain_indexer 区块链索引 chain_indexer.go 源码解析 chain_indexer 顾名思义, 就是用来给区块链创建索引的功能。 之前在eth协议的时候,介绍过BloomIndexer的功能,其实BloomIndexer是chain_indexer的一个特殊的实现, 可以理解为派生类, 主要的功能其实实在chain_indexer这里面实现的。虽说是派生类,但是chain_indexer其实就只被BloomIndexer使用。也就是给区块链的布隆过滤器创建了索引,以便快速的响应用户的日志搜索功能。 下面就来分析这部分的代码。 数据结构 // ChainIndexerBackend defines the methods needed to process chai...阅读全文

博文 2018-10-19 10:34:39 兄弟连区块链培训

兄弟连区块链教程Fabric1.0源代码分析gRPC(Fabric中注册的gRPC Service)一

兄弟连区块链教程Fabric1.0源代码分析gRPC(Fabric中注册的gRPC Service)一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 # Fabric 1.0源代码笔记 之 -gRPC(Fabric中注册的gRPC Service) Peer节点中注册的gRPC Service,包括: * Events Service(事件服务):Chat * Admin Service(管理服务):GetStatus、StartServer、GetModuleLogLevel、SetModuleLogLevel、RevertLogLevels * Endo...阅读全文

博文 2018-11-08 14:47:33 ITXDL

兄弟连区块链入门教程以太坊源码分析event源码分析

兄弟连区块链入门教程以太坊源码分析event源码分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 event包实现了同一个进程内部的事件发布和订阅模式。## event.go目前这部分代码被标记为Deprecated,告知用户使用Feed这个对象。 不过在代码中任然有使用。 而且这部分的代码也不多。 就简单介绍一下。数据结构TypeMux是主要的使用。 subm记录了所有的订阅者。 可以看到每中类型都可以有很多的订阅者。 // TypeMuxEvent is a time-tagged notification pushed to subscribers....阅读全文

博文 2018-10-23 16:34:49 兄弟连区块链培训

深入浅出谈以太坊智能合约

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1什么是合约? 合约是代码(它的功能)和数据(它的状态)的集合,存在于以太坊区块链的特定地址。 合约账户能够在彼此之间传递信息,进行图灵完备的运算。合约依靠被称作以太坊虚拟机(EVM) 字节代码(以太坊特有的二进制格式)上的区块链运行。 合约很典型地用诸如Solidity等高级语言写成,然后编译成字节代码上传到区块链上。 也有其他语言可以用于编写智能合约如Serpent和LLL,在下一节会进一步阐述。去中心化应用开发资源列出了综合的开发环境,帮助你用这些语言开发的开发者工具,提供测试和部署支持等功能。 2以太坊高级语言 合约依靠被称作以太坊虚拟机(EVM) 字节代码(以太坊特有的二进制格式)上的区块链运行。然而,...阅读全文

博文 2019-09-27 17:02:46 链客

区块链入门教程以太坊源码分析core-state源码分析(二)

兄弟连区块链入门教程以太坊源码分析core-state源码分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 ## statedb.go stateDB用来存储以太坊中关于merkle trie的所有内容。 StateDB负责缓存和存储嵌套状态。 这是检索合约和账户的一般查询界面: 数据结构 type StateDB struct { db Database // 后端的数据库 trie Trie // trie树 main account trie // This map holds 'live' objects, which will get modif...阅读全文

博文 2018-10-22 16:35:01 兄弟连区块链培训

Parse Bitcoin Ledger To Elasticsearch

Dump Bitcoin Mainnet ledger to elasticsearch. constructed specify format so we can query balance and utxo, the main propose of the repo is for wallet or block explorer Install Environment require: Golang (compile) Dep (package dependency) Elasticsearch (database) Before clone the repo, I wanna let claim that there is a bug I have verified the btcd,...阅读全文

博文 2018-08-14 17:35:19 老码农不上班

2020 区块链 golang 版本(7)

封面 我们知道比特币的安全性来源 hash 加密和共识机制,所以我们今天聊一聊比特币中的共识机制。 分布式共识 分布式的 hash 表,系统有很多计算机,这些计算机共同来维护一个 hash 表。 Alice -> 12345 下面介绍关于分布式两个结论 关于分布式 FLP impossibility result 在一个异步系统里(网络延时没有上限),即使一个成员是有问题,也就是无法取得共识。 CAP Theorem C(Consistency) A(Availability) P(Partition tolerance) 任何一个分布系统,这个三个性质中最多只能满足两个,无法全部满足以上3性质。 分布式共识一个比较著名协议我 Paxos,Paxos 又能一直没有达到共识。这些理论我们简单了...阅读全文

兄弟连区块链教程Fabric1.0源代码分析Tx(Transaction 交易)二

## 4、交易相关部分工具函数(protos/utils包) putils更详细内容,参考:Fabric 1.0源代码笔记 之 putils(protos/utils工具包) ## 5、RWSet(读写集) RWSet更详细内容,参考:Fabric 1.0源代码笔记 之 Tx #RWSet(读写集) ## 6、version.Height结构体及方法 ```go type Height struct { BlockNum uint64 //区块编号 TxNum uint64 //交易编号 } func NewHeight(blockNum, txNum uint64) *Height //构造Height func NewHeightFromBytes(b []byte) (*Height,...阅读全文

博文 2018-11-08 16:04:00 ITXDL

兄弟连区块链教程Fabric1.0源代码分析blockfile区块文件存储一

Fabric 1.0源代码笔记 之 blockfile(区块文件存储) 1、blockfile概述 blockfile,即Fabric区块链区块文件存储,默认目录/var/hyperledger/production/ledgersData/chains,含index和chains两个子目录。其中index为索引目录,采用leveldb实现。而chains为各ledger的区块链文件,子目录以ledgerid为名,使用文件系统实现。区块文件以blockfile_为前缀,最大大小默认64M。 blockfile,相关代码集中在common/ledger/blkstorage/fsblkstorage目录,目录结构如下: blockfile_mgr.go,blockfileMgr和checkpo...阅读全文

博文 2018-10-26 16:34:48 兄弟连区块链培训

golang[39]-区块链-产生wif私钥

压缩公钥公钥一般来说是椭圆曲线上的x,y坐标拼接在一起的。压缩的公钥其实就是x的坐标。WIF 私钥产生本文链接: https://dreamerjonson.com/2018/12/09/golang-39-blockchain-generateprivatekeywif/版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处...阅读全文

博文 2019-02-21 15:35:55 jonson_jackson

兄弟连区块链教程以太坊源码分析core-state源码分析(一)

兄弟连区块链教程以太坊源码分析core-state源码分析,core/state 包主要为以太坊的state trie提供了一层缓存层(cache) database主要提供了trie树的抽象,提供trie树的缓存和合约代码长度的缓存。journal主要提供了操作日志,以及操作回滚的功能。state_object是account对象的抽象,提供了账户的一些功能。statedb主要是提供了state trie的部分功能。 database.go database.go 提供了一个数据库的抽象。 数据结构 // Database wraps access to tries and contract code. type Database interface { // Accessing trie...阅读全文

博文 2018-10-22 16:35:00 兄弟连区块链培训

2020 区块链 golang 版本(3)

封面 学区块链会不会过时 我们通过比特币了解到区块链,所以大家认为比特币的兴衰就代表区块链发展趋势,其实比特币只不过是区块链的一个最佳实践罢了。现在还是处于区块链的起步阶段。而且区块链无论在应用上还是技术上都还有广泛的空间。随着比特币出现之后以太坊的出现有推动了区块链的发展。 我们都知道在比特币中涵盖多种技术,今天我们就来谈一谈比特币的几个关键技术 密码学 比特币被称为加密货币,虽然所是加密货币,但是其实比特币的交易会会在全网广播。比特币中主要应用了密码学中的哈希和签名。 哈希运算 我们先说哈希运算,因为输入空间远远大于输出空间,所以不同值经过哈希运算得到哈希值相同是难免的。哈希值取值可能为 ,但是输入是无限空间,不同值经过哈希运算得到相同哈希值的现象叫做哈希碰撞。但是没有方法可以认为制造出...阅读全文

博文 2020-04-25 01:32:52 zidea

兄弟连区块链教程Fabric1.0源代码分析Peer(Endorser服务端)

兄弟连区块链教程Fabric1.0源代码分析Peer(Endorser服务端),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。# Fabric 1.0源代码笔记 之 Peer #EndorserServer(Endorser服务端)## 1、EndorserServer概述EndorserServer相关代码在protos/peer、core/endorser目录下。* protos/peer/peer.pb.go,EndorserServer接口定义。* core/endorser/endorser.go,EndorserServer接口实现,即Endors...阅读全文

博文 2018-11-06 19:34:39 兄弟连区块链培训

兄弟连区块链教程以太坊源码分析core-vm-stack-memory源码分析

vm使用了stack.go里面的对象Stack来作为虚拟机的堆栈。memory代表了虚拟机里面使用的内存对象。 stack 比较简单,就是用1024个big.Int的定长数组来作为堆栈的存储。 构造 // stack is an object for basic stack operations. Items popped to the stack are // expected to be changed and modified. stack does not take care of adding newly // initialised objects. type Stack struct { data []*big.Int } func newstack() *Stack { re...阅读全文

博文 2018-10-22 17:34:41 兄弟连区块链培训

Go36-42,43-bufio包

bufio包 这是另一个与I/O操作强相关的代码包。bufio是“buffered I/O”的缩写,这个代码包中的程序实体实现的I/O操作都内置了缓冲区。 主要数据类型 bufio包中的数据类型主要有: Reader Scanner Writer和ReadWriter 与io包中的数据类型类似,这些类型的值也都需要在初始化的时候,包装一个或多个简单I/O接口类型的值。这里的简单I/O接口类型指的就是io包中的那些简单接口。 缓冲区的作用(bufio.Reader) bufio.Reader类型的值内的缓冲区其实就是一个数据存储中介,它介于底层读取器与读取方法及其调用方之间。所谓的底层读取器,就是在初始化此类值的时候传入的io.Reader类型的参数值。 Reader值的读取方法一般会先从其所...阅读全文

博文 2019-02-06 21:35:13 骑士救兵

区块结构描述

1、块链(Blockchain)表现形式为块文件,名称如blockfile_000000,由块(Block)按照顺序排列组成,每一个块的头部(Header)都包含了当前块的data_hash和前一个块的hash值previous_hash,官网blockchain结构图如下:块链B包含了块B0,B1,B2,B3,其中B0是创世块(genesis block) 2、块(Block)包含3部分内容:块头,块数据,块的元数据。具体描述如下:2.1块头(Block Header)块头结构形式如下: "header": { "data_hash": "xXLEx+MSmIh3XiYCOOzgqgbncCWv/CerQmr4pv5htIw=", "number": "4", "previous_hash...阅读全文

博文 2020-01-09 23:32:45 阿留神

Bystack跨链技术源码解读

Bystack是由比原链团队提出的一主多侧链架构的BaaS平台。其将区块链应用分为三层架构:底层账本层,侧链扩展层,业务适配层。底层账本层为Layer1,即为目前比较成熟的采用POW共识的Bytom公链。侧链扩展层为Layer2,为多侧链层,vapor侧链即处于Layer2。 Vapor侧链采用DPOS和BBFT共识,TPS可以达到数万。此处就分析一下连接Bytom主链和Vapor侧链的跨链模型。 主侧链协同工作模型 1、技术细节 POW当前因为能源浪费而饱受诟病,而且POW本身在提高TPS的过程中遇到诸多问题,理论上可以把块变大,可以往块里面塞更多的交易。TPS是每秒出块数*块里面的交易数。但是也存在问题:小节点吃不消存储这么大的容量的内容,会慢慢变成中心化的模式,因为只有大财团和大机构才...阅读全文

博文 2019-07-18 15:32:47 比原链Bytom

Derek解读Bytom源码-孤块管理

作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本章介绍bytom代码孤块管理 作者使用MacOS操作系统,其他平台也大同小异 Golang Version: 1.8 孤块介绍 什么是孤块 当节点收到了一个有效的区块,而在现有的主链中却未找到它的父区块,那么这个区块被认为是“孤块”。父区块是指当前区块的PreviousBlockHash字段指向上一区块的hash值。 接收到的孤块会被存储在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。 孤块出现的原因 当两个...阅读全文

博文 2018-09-17 13:34:41 比原链Bytom