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

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

兄弟连区块链教程btcpool矿池源码分析nmcauxmaker模块解析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。# btcpool矿池-nmcauxmaker模块解析## nmcauxmaker命令使用```shellnmcauxmaker -c nmcauxmaker.cfg -l log_nmcauxmaker#-c指定nmcauxmaker配置文件#-l指定日志目录```## nmcauxmaker.cfg配置文件```nmcauxmaker = {//rpc调用间隔(秒)rpcinterval = 10;//最近一次rpc调用时间写入文件fil...阅读全文

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

招聘区块链的大小咖,欢迎来撩,坐标杭州

岗位职责 1.从事区块链产品的设计与研发工作,研究区块链的协议,运行机制和底层实现等; 2.搭建基于区块链的底层架构,实现公链、侧链、私链等多种逻辑,供应用层调度使用。 3.组织制定和实施技术决策和技术方案,组织架构设计与升级优化; 4.指导项目团队成员的日常开发工作,解决开发中的技术问题; 职位要求 1.熟悉比特币、以太坊、Fabric等的区块链相关机制与原理 2.理解各类主流的共识算法,包括不限于PoW,PoS,DPoS,PBFT,Paxos,Raft等 3.熟练掌握GoLang或C/C 开发语言 4.熟练掌握主流编程语言如Node.js, Python 5.熟悉linux操作系统,熟练掌握Docker容器技术的原理,部署和使用优化 6.熟悉TCP/IP...阅读全文

一文读懂公有链、私有链、联盟链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链中公有链、私有链、联盟链都是区块链技术的一个细分,而技术仅仅是一种工具,怎么在不同的场景应用好不同的工具才是技术进步的关键。 公有链是什么? 公有链(publicblockchain)是指全世界任何人都可读取、发送交易且能获得有效确认的共识区块链。 公链的安全由工作量证明机制(pow)或权益证明机制(pos)等方式负责维护。他们是以经济奖励和加 密数字验证相结合的方式存在的,并遵循这一定的原则: 每个人从中可获得的经济奖励,与对共识过程作出的贡献成正比。 这些区块链通常被称为是“完全去中心化”的。 私有链是什么? 私有链是什么?(Token-less blockchain)。完全私有的区块链,是指其写入权限...阅读全文

博文 2019-09-19 15:02:57 链客

fmt.printf 为什么能输出整个缓冲数据?

> 我尝试使用 net 包的客户端接收服务端的数据。但是我发现 fmt.Printf 和 log.Printf 输出的完全不同。缓冲区我是故意设置为 2 的。我的假设传输的数据为: hello world 求大神指点!感激~ ``` buff := make([]byte, 2) for { count, err := this.conn.Read(buff) if err != nil { return } fmt.Printf("%s", buff[:count]) // hello world log.Printf("%s", buff[:count]) // he ll o wo rl d } ``` ...阅读全文

ARTS 第11周

ARTS 第11周分享 [TOC] Algorithm 发现自己的算法能力太差了,打算从最基础的数据结构学习算法,将自己的基础给打扎实, 实现一个单项循环队列 [思路] 一个队列包含有前节点,指向第一个元素;尾节点,指向最后一个元素;最大尺寸,记录能够存储的最大元素数量;以及一个数组用来存储实际的数据(在golang中更适合用slice实现) 初始头和尾指针都指向下标为0的元素 通过预留一个空位来区别空队列与满队列,否则将很难区分二者 空:rear = front 满:(rear+1+ maxSize - front)% maxSize == 0 [参考代码] type singleCircleArray struct { maxSize int front int rear int myA...阅读全文

博文 2019-06-17 00:32:39 陈卧虫

区块链的新概念“胖协议”

最近得到一个新概念,胖协议(Fat Protocols)。(胖协议可以理解为基础链)胖协议的概念来自于Fat Protocols,翻译版见文章末尾。从这个角度看过去,或许我们能更清楚互联网和区块链之间的区别。 图1-互联网生态 vs 区块链生态。我们经常用到的App,但凡跟网络沾边,就都离不开协议。说到协议,除了经常看到的http:/(HTTP协议),经常听到的IP地址(IP协议),其他我们知道的并不多。其实,网络上每个消息的发送与接收,都离不开协议。协议就像人们约定成俗的语言,没有协议,电脑之间无法通讯,网络也就不复存在。就好像你说A语,我说B语,大家谁也听不懂谁。 协议如此重要,可它却是价值最小的。但也不奇怪,因为那都是瘦协议,薄薄的一层,只约定了软件应该如何通讯。比如微信,发送消息使用...阅读全文

博文 2017-07-29 18:06:23 大硕简书

golang[46]-区块链-比特币真实挖矿过程实现

比特币真实挖矿过程实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149...阅读全文

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

我是如何从Java转型为Go区块链工程师

我是如何从Java转型为Go区块链工程师 本文来自于一个比原链核心开发的陈述 前言 本人在加入比原链之前一直是做Java开发的,当初看到Go还有点犹豫,还怕过不了面试,结果是否掌握一门语言的考量确实没那么高,我顺利入职比原链,并在半个月内很快掌握Go并能够进行核心项目的开发。Java语言在较大的成熟项目上具有优势,但是在区块链开发中确实会有很多短处,比如在协程处理上,还有Java语言本身不够灵活等等,当然选择使用Go主要是因为其在区块链的流行程度。 区块链的流行语言 在区块链公链的开发圈子里,我们找到了一些流行的编程语言,有C++、Golang、Python和最近新起的Rust等等。 稍微对比较有名的项目采用的编程语言做个统计,如下图: 老一代的公链,比如Bitcoin,Litcoin一般使...阅读全文

博文 2020-01-02 12:32:39 比原链Bytom

go实现区块链[4]-遍历区块链与数据库持久化(下)

遍历区块链blockchain.go完整代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136package mainimport ( "github...阅读全文

博文 2018-12-20 00:35:13 jonson_jackson

go实现区块链[3]-遍历区块链与数据库持久化

新建blockchain.go1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889package mainimport ( "github.com/boltdb/bolt" "log" "fmt")const dbFile = "blockchain.db"const blockBucket = "blocks"type Blockchain struct{ tip []byte //最近的一个区块的hash值...阅读全文

博文 2018-12-20 00:35:13 jonson_jackson

兄弟连区块链技术培训Fabric 1.0源代码分析(33) Peer #peer channel命令及子命令实现

兄弟连区块链技术培训Fabric 1.0源代码分析(33) Peer #peer channel命令及子命令实现# Fabric 1.0源代码笔记 之 Peer #peer channel命令及子命令实现## 1、peer channel create子命令实现(创建通道)### 1.1、初始化Orderer客户端```goconst ( EndorserRequired EndorserRequirement = true EndorserNotRequired EndorserRequirement = false OrdererRequired OrdererRequirement = true OrdererNotRequired OrdererRequirement = false...阅读全文

博文 2018-07-23 15:34:59 Delete_88c3

​​区块链持久化--golang实现区块链系列之三

本篇使用boltdb的简易数据库将区块链的数据持久化到一个文件中。boltdb是kv形式保存的。 下面代码: package main import ( "github.com/boltdb/bolt" "os" ) const dbfile = "blockchain.db" const blockBucket = "block_demo" const lastHashKey = "genesis" type BlockChian struct { //blocks []*Block db *bolt.DB lastHash []byte } func NewBlockChain() *BlockChian { //return &Blo ckChian{[]*Block{NewGenes...阅读全文

博文 2018-10-12 00:34:41 若与

区块链教程Fabric1.0源代码分析Ledger(账本)二

区块链教程之Fabric1.0源代码分析Ledger(账本)二。 Fabric 1.0源代码笔记 之 Ledger(账本) 补充PeerLedger接口嵌入的commonledger.Ledger接口定义如下: type Ledger interface { GetBlockchainInfo() (*common.BlockchainInfo, error) //获取blockchain基本信息 GetBlockByNumber(blockNumber uint64) (*common.Block, error) //按给定高度获取Block,给定math.MaxUint64将获取最新Block GetBlocksIterator(startBlockNumber uint64) (Res...阅读全文

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

区块链

区块链技术起源于化名为“中本聪”(SatoshiNakamoto)的学者在 2008 年发表的奠基性论文《比特币: 一种点对点电子现金系统》。狭义来讲, 区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本...阅读全文

博文 2020-04-21 10:05:02 wjl2020

区块链创业,如何高效的找到区块链人才?

本文是笔者《区块链创业宝典:发币募资之36计》系列文章之一。该系列文章是基于笔者亲身实践及因投资数字货币而观察和总结的一些经验,旨在为区块链创业者在数字货币融资过程中提供一些帮助。如果觉得有用,欢迎分享。由于很多内容涉及十分关键的私密内容,不会公开发表,如有需要,请加入我的星球,还请谅解。第35计 如何高效的找到区块链人才区块链领域人才的价格都很贵,是区块链创业的重要成本之一,且由于人才稀缺,招人还特别不容易。在一个项目刚完成融资时,是项目方用人最急切的时候。一般来说,项目方这时有了钱,且投资人也有压力让其尽快做出东西来,所以这时用人需求最强。很多项目方在招区块链领域的人时并不顺利。对于如何高效的找到区块链人才,笔者分成三个部分来回答。第一部分,如何快速提高招聘区块链人才的技巧。笔者有如下一...阅读全文

博文 2018-09-14 10:34:50 lingxuanpku

小猿圈浅谈为什么区块链用go语言开发

去年很火的区块链大家还记得吗?相信有部分人还是了解的,区块链是用go语言开发作为基础语言的,这到底是为什么呢?其实go语言是常常备用来做中心化系统,其他公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。下面小猿圈老师就为你讲解一下为什么区块链用go语言开发。 我们在决定做Karachain的时候,考量(benchmark)了C,C++,Java,甚至NodeJs,我们也试着用一些算法来作为考量标准。而现在,我表示我们正在用Go来实现此目标,并且感觉不错。现在建造一个区块链,恰如当时建造一个操作系统,我们在建造像区块链平台这样复杂的东西时,把注意力放在了那些核心问题上。经过差不多4周的开发与探索,我们才发现这门奇妙的语言是如何优雅地解答了我们的难题。Go语言很简单。并且每...阅读全文

博文 2019-07-03 15:03:43 小霞_2d43

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

兄弟连区块链入门教程以太源码分析accounts账户管理分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。##数据结构分析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 // Inde...阅读全文

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

兄弟连区块链入门教程以太坊源码分析fast sync算法一

兄弟连区块链入门教程以太坊源码分析fast sync算法一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。this PR aggregates a lot of small modifications to core, trie, eth and other packages to collectively implement the eth/63 fast synchronization algorithm. In short, geth --fast.这个提交请求包含了对core,trie,eth和其他一些package的微小的修改,来共同实现eth/63...阅读全文

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

兄弟连区块链教程以太坊源码分析core-genesis创世区块源码分析

genesis 是创世区块的意思. 一个区块链就是从同一个创世区块开始,通过规则形成的.不同的网络有不同的创世区块, 主网络和测试网路的创世区块是不同的. 这个模块根据传入的genesis的初始值和database,来设置genesis的状态,如果不存在创世区块,那么在database里面创建它。 数据结构 // Genesis specifies the header fields, state of a genesis block. It also defines hard// fork switch-over blocks through the chain configuration.// Genesis指定header的字段,起始块的状态。 它还通过配置来定义硬叉切换块。type ...阅读全文

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

Go语言学习笔记01--区块链概述与go语言变量相关

1.区块链与go 区块链是一个时代的产物。涉及到很多核心词汇,例如: Google,肯·汤姆逊,丹尼斯·李琦,图灵,B,C,中心化,去中心化,区块 Google:go语言是Google公司开发的一款,快速,高效,集群化的语言 汤姆逊:B语言+C语言的创始人之一,后去Google任职,为Go语言的创始人 丹尼斯·李琦:B语言+C语言的创始人之一 图灵:现代计算机之父,传奇巨匠 中心化:信息“公证”,但存在安全风险。因为“公证”概念本身就不存在 去中心化:信息“公开”,将所有的信息加密后发送给每一个信息体, 保证信息安全不会因单一信息体崩溃导致信息失效 区块(block):其实就是一个消息体,包括:信息体双方,信息内容,信息时间等。 区块链(blocks):以时间为轴,将所有的区块链接成一个链条...阅读全文

博文 2018-11-28 14:04:59 FrankAdd

轻松学习区块链3 - KV数据库的实现和区块链数据的持久化

MiniBC区块链V002 - KV数据库的实现和区块链数据的持久化 KV数据库 虽然我们已经创建了一条非常简单的区块链,但是当程序关闭后,内存中的区块数据却没有保存下来。这使得我们无法重复使用一个区块链,也无法与其他人分享,我们需要将它存储在硬盘中。我们接下来的任务就是实现一个极小的KV数据库,用来保存区块链数据。像比特币bitcoin使用了leveldb数据库,也有些golang开发的区块链采用了BoltDB,它们都属于单机KV数据库。 KV数据库,也就是key/value数据库,这种数据库没有关系型数据库系统RDMBS(比如MySQL,Oracle,PostgreSQL等)的表(table)、行(row)、列(column)等概念。数据均以键/值(key/value)的方式进行存储,类...阅读全文

Go语言实现一个区块链

本文将逐步拆解实现区块链功能的几个步骤 你需要掌握的基本知识: 什么是区块链 sha256哈希加密算法 go语言基础,包括goroutine和channel的理解 准备工作 go get github.com/davecgh/go-spew/spew spew是一个非常好的打印输出工具,可以在终端输出struct和slice数据 go get github.com/gorilla/mux mux可以用来处理http请求,帮助我们快速搭建一个go服务器 go get github.com/joho/godotenv 这个包可以读取.env文件中的变量 .env文件需要在项目的根目录下,一般在main.go所在位置 一款给力的IDE,比如Goland 几个概念 挖矿,挖矿其实就是通过解决一类数学...阅读全文

博文 2019-07-17 19:32:38 Sunday

2018.9.11 从0到1,你准备好了吗?

最近两天又接到一个任务,给一家区块链公司招聘go开发的人才。于是便在一些社区发了招聘帖子,没多久就有人加我微信,立即通过了。对方是一位前端开发工程师,对区块链感兴趣,想转做区块链后端开发,对于这样的转行跳槽者,我觉得她是有勇气的。她跟我了解了区块链行业的人才需求以及薪酬情况,我也一一解答向她了。她还问了我一个问题:你们招区块链培训机构出来的人么?我说:这个和培训机构没关系的,主要看你自己的技术功底的,不过我个人觉得区块链培训机构,目前应该都不是很成熟的,不太建议你去,大部分不太靠谱。她还和我说,听培训机构说有很多hr跟他们要人。我第一感觉就是她被这些机构忽悠了,区块链技术处于起步阶段,大家都还在摸索,并没有完全成熟的模式,他们这些机构哪能一下子掌握呢?这些都是要靠实践才行的,不是去短时间培训...阅读全文

go - bufio 缓冲读写详解级实例

go在提供了io包的同时也提供了bufio包来实现有缓存的读写操作以提高读写性能。为什么bufio性能比io高呢? 缓冲读写 缓冲读 // 默认缓冲区大小 const ( defaultBufSize = 4096 ) // 最小缓冲区大小 自定义小于次阈值将会被覆盖 const minReadBufferSize = 16 // 使用默认缓冲区大小 bufio.NewReader(rd io.Reader) // 使用自定义缓冲区大小 bufio.NewReaderSize(rd io.Reader, size int) 缓冲读的大致过程如下,设定好缓冲区大小buf_size后,读取的字节数为rn,缓冲的字节数为bn: 如果缓冲区为空,且 rn >= buf_size,则直接从文件读取,不...阅读全文

博文 2019-06-15 17:32:39 big_cat

释放阻塞的以太坊交易

目前以太坊正面临着许多积压的交易,导致一些交易数小时甚至数天都未被处理。 本文解释了转账如何被卡住,以及如何释放它们。确定gas价格发送以太坊交易时,有许多方法可以确定最佳gas值。https://ethgasstation.info等网站提供了gas使用情况的概述,https://www.etherscan.io/txsPending提供了当前交易池的有关信息。后者的网站特别有用,因为它可以通过gas价格组织交易清单。 你可以点击GasPrice栏来查看。 由此产生的清单大致也是矿工看待交易的方式,所以如果您据此选择一个gas价格以确保您的交易是在前几页,您可能会有一个非常短的交易确认时间。但是如果你的交易没有被确认呢?它有可能被阻塞了,需要进行释放。理解阻塞交易在解释如何释放阻塞交易之前...阅读全文

博文 2018-11-08 00:34:43 以太中文网

区块链教程Fabric1.0源代码分析Ledger(账本)一

区块链教程Fabric1.0源代码分析Ledger(账本)一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之 Ledger(账本) 1、Ledger概述 Ledger,即账本数据库。Fabric账本中有四种数据库,idStore(ledgerID数据库)、blkstorage(block文件存储)、statedb(状态数据库)、historydb(历史数据库)。其中idStore、historydb使用leveldb实现,statedb可选择使用leveldb或couchDB。而blkstorage中index部分使用lev...阅读全文

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

区块链火爆,再不知道Golang就晚了

Golang,也叫Go语言,是2009年刚刚被发发布的一门新语言。 区块链,是2019年我国提出的新战略。 一个不争的事实就是,大多数从事区块链开发的小伙伴都是用Golang,大多数招聘区块链技术工作的公司都要求Golang背景的人员。 区块链,作为一个技术,本身跟开发语言没有一对一关系。 事实上,纯技术角度来看,编写区块链最好的语言反而是古老的C++,比JAVA还古老的语言。甚至,JAVA、Python、Rust等等语言都可以用来编写区块链程序。 Golang成为区块链世界的主流,除了市场的选择,还有这种语言自身的优点,比如:1. 天生支持并发,go关键字直接搞定;2. 采用协程来实现高并发,管道负责通信;3. 代码编译成二进制,执行速度快,堪比C语言;4. 适合做分布式系统开发;那么下面...阅读全文

博文 2019-12-17 04:32:40 Testfan软件测试

2020 区块链 golang 版本(2)

封面 今天我们依旧是理论,代码实现随后就来。 交易流程 如果没有交易那么比特币就失去意义,即使现在拥有一套比特币的源码,也无法再创造出一下个比特币。比特币货币发行也是离不来交易,这都说明交易在区块链中的重要性。 1.创建交易 创建一个地址,然后通过往这个地址发送比特币就完成一次交易。 2.广播交易(校验交易) 当交易完成,就会发送到网络中每一个节点,每一个节点在接收到交易后,需要先进行校验。校验签名和金额,其实只有校验通过该节点才会继续广播。每一个节点的校验都是独立,并不依赖于其他节点。那么如果不做校验,在打包完成后挖矿后,因为其他节点对块中交易校验时发现错误就会造成这一次挖矿失败。 3.挖矿竞争 也是就是工作量证明,工作量证明好处放置某个节点作弊,在区块链通过工作量证明和投票来有效放置某些...阅读全文

使用BSN一天学会区块链开发-python篇

《使用BSN 一天学会区块链开发》系列文章可以帮助具有一定开发经验的开发者,在不需要学习区块链开发语言的情况下,在区块链服务网络(BSN)上完成区块链应用的开发。本文主要介绍用户如何通过链下业务系统使用Python语言与链上数据进行交互而进行的相关操作流程说明,但在说明链下业务系统与链上进行数据交互之前,首先对用户如何在区块链服务门户注册、应用发布服务、应用服务参与以及应用管理进行一一说明。注册和登录打开区块链服务网络网址:www.bsnbase.com, 点击登录页面中的【内测申请】按钮进入内测申请页: 根据页面中的提示填写内测申请信息并提交内测申请,内测申请用户分为个人用户和企业用户两种,申请人应根据自己的用户类型任选一种进行申请, 内测申请提交后需等待系统审核,待系统审核通过后将向申请...阅读全文

【go共识算法】-POS

pos介绍 参考链接1 pos概念 Proof of Stake,股权证明。PoS核心概念为币龄,即持有货币的时间。例如有10个币、持有90天,即拥有900币天的币龄。另外使用币,即意味着币龄的销毁。在PoS中有一种特殊的交易称为利息币,即持有人可以消耗币龄获得利息,同时获得为网络产生区块、以及PoS造币的优先权。 点点币应用 第一个基于PoS的虚拟币是点点币。鉴于PoW的缺陷,2012年Sunny King提出了PoS,并基于PoW和PoS的混合机制发布了点点币PPCoin。前期采用PoW挖矿开采和分配货币,以保证公平。后期采用PoS机制,保障网络安全,即拥有51%货币难度更大,从而防止51%攻击。 点点币(Peercoin)是首先采用权益证明的货币,点点币在SHA256的哈希运算的难度方...阅读全文

博文 2018-09-27 14:34:41 jincheng828

2018.8.30你是这些公司青睐的人才吗?

最近一个案例引发了我对区块链公司用人要求的思考。一周前推荐了一位我认为不错的候选人,985院校计算机专业硕士学历,两年工作经验,毕业后一直在一家知名的互联网公司上班,技术也比较扎实,近期两个月在持续关注区块链并看好区块链行业,想趁年轻进入这个行业,看看有没有更好的发展机会。他的条件不错,我帮他推荐了业内三家不错的区块链公司。当初拿到他的简历时,我挺满意的,认为他很大概率上会拿到这几家公司的offer,因为之前操作过类似的case,这种背景的人一般都会被offer。等待了一周,结果却在我的意料之外。那么问题到底出现在哪里呢?我这几天一直在思考。直到今天和一位区块链公司的招聘聊天中她的一句话提醒了我:请尽量帮我找资深一点的人吧,要来了就能干活的那种,薪资不是问题,都能谈。从去年年底到现在,半年多...阅读全文

Golang公链开发004-通过命令行操作区块链

目录 flag基本使用 os.Args基本使用 flag与os.Args组合使用 通过命令行添加/查询区块 测试代码与测试结果 一. flag基本使用 通常我们在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。在 go 标准库中提供了一个包:flag,方便进行命令行解析。 1.导入flag包 import ( "flag" ) 2.使用示例 //定义一个字符串flag,flag名为printchain,默认值为:hello BTC world,参数说明: 输出所有的区块信息 flagString := flag.String("printchain", "hello BTC world", "输出所有的区块...阅读全文

博文 2018-07-25 15:35:56 暗黑魔君

golang中bufio包的实现原理

最近用golang写了一个处理文件的脚本,由于其中涉及到了文件读写,开始使用golang中的 io 包,后来发现golang 中提供了一个bufio的包,使用这个包可以大幅提高文件读写的效率,于是在网上搜索同样的文件读写为什么bufio 要比io的读写更快速呢?根据网上的资料和阅读源码,以下来详细解释下bufio的高效如何实现的。 bufio 包介绍 bufio包实现了有缓冲的I/O。它包装一个io.Reader或io.Writer接口对象,创建另一个也实现了该接口,且同时还提供了缓冲和一些文本I/O的帮助函数的对象。 以上为官方包的介绍,在其中我们能了解到的信息如下: bufio 是通过缓冲来提高效率 简单的说就是,把文件读取进缓冲(内存)之后再读取的时候就可以避免文件系统的io 从而提高...阅读全文

博文 2018-01-07 16:33:04 liangwt

兄弟连区块链技术培训Fabric 1.0源代码分析(48)Fabric 1.0.4 go代码量统计

兄弟连区块链技术培训Fabric 1.0源代码分析(48)Fabric 1.0.4 go代码量统计# Fabric 1.0源代码笔记 之Fabric 1.0.4 go代码量统计## 1、概述除test、vendor、mocks、example、protos外,go核心代码文件341个,核心代码行63433行。```bashfind ./ |grep -vE 'test|vendor|mocks|example|protos' | grep '\.go$' | wc -l341wc -l `find ./ |grep -vE 'test|vendor|mocks|example|protos' | grep '\.go$'`63433 total```## 2、代码分布 目录 代码量 代码量占...阅读全文

博文 2018-07-23 15:34:58 Delete_88c3

Godep使用中的坑,求指导

1. Godep 使用 Restore之后将下载下来的包放在了github.com的目录下,而没有放在Vendor目录下,我想把下载下来的包放到vendor的目录下,但是执行godep save [package]没有反映,使用Godep怎样才能做到我要的效果? 2. 某些文件在执行godep restore的时候下载失败,我把这些包手动放在了vendor下,然后提交到远程,执行go save的时候怎么忽略我手动放到vendor的包? ...阅读全文

用 golang 实现区块链系列一 | 基本原型

介绍 区块链是二十一世纪以来最具革命性的科技之一,它仍在发展中,并且其潜力仍未被充分认知。本质上,区块链只是一个分布式的记录数据库,但使它和其他数据库不一样的是,他并不是一个私有数据库,而是公开的。每个使用它的人都有完整或者部分副本。并且一条新的记录只能在被数据库的其他管理员同意的情况下才能被加入。区块链也使得加密货币和智能合约成为可能。 本系列文章将会构建一个基于简单区块链实现的简单加密货币。 Block 我们从 “区块链” 的 “区块” 开始讲起。在区块链中, block 存储着有价值的信息。例如,比特币区块存储着交易信息,这是加密货币的本质。除此之外,区块还包含着一些技术信息,像是版本号,当前时间戳,还有上一个区块的 hash 值。 在本文中,我们不会去着手实现一个区块链中描述的区块,...阅读全文

博文 2018-11-19 20:34:51 小马哥_Magical

轻松学习区块链2 - 简单区块链的实现

源码地址: [https://github.com/wangshizebin/minibc】 区块 我们从“区块链”的“区块”部分开始。区块是区块链中最基本的数据结构,在区块链中,区块存储了有价值信息。例如,比特币区块存储了交易数据,除此之外,区块中还包含其它信息:版本号,当前时间和前一个块的哈希值等。我们把bitcoin的区块定义稍作简化,作为MiniBC的区块定义: type Block struct { Version int32 //协议版本号 HashPrevBlock []byte //上一个区块的hash值,长度为32个字节 Time int32 //时间戳,从1970.01.01 00:00:00到当前时间的秒数 Bits int32 //工作量证明(POW)的难度 Nonc...阅读全文

博文 2019-05-17 14:34:42 泽宾

区块链教程Fabric1.0源代码分析configtx#ChannelConfig

Fabric 1.0源代码笔记 之 configtx(配置交易) #ChannelConfig(通道配置) 1、ChannelConfig概述 ChannelConfig代码分布在common/config目录下。目录结构如下: channel_util.go,channel相关工具函数。 orderer_util.go,orderer(系统通道)相关工具函数。 application_util.go,应用通道相关工具函数。 consortiums_util.go,联盟相关工具函数。 api.go,核心接口定义,如Org、ApplicationOrg、Channel、Orderer、Application、Consortium、Consortiums、ValueProposer接口定义。 r...阅读全文

博文 2018-10-30 17:34:38 兄弟连区块链

golang实现dpos

DPOS股份授权证明,即 Delegated Proof of Stake 译为股份授权证明,最早于 2013 年由 Bitshares 提出,目的为解决 PoW 和 PoS 机制的不足,DPoS 机制的加密货币,每个节点都可以操作区块,并按照个人的持股比例获得“利 息”,DPoS 是由被社区选举的可信帐户(受托人,得票数排行前 101 位)来创建区块, 为了成为正式受托人,用户要去社区拉票,获得足够多用户的信任,用户根据自己 持有的加密货币数量占总量的百分比来投票,DPoS 机制类似于股份制公司,普通股民进不了董事会,要投票选举代表(受托人) 代他们做决策,这 101 个受托人可以理解为 101 个矿池,而这 101 个矿池彼此的权利是完全相等的,那些握着加密货币的用户可以随时通过投票更换...阅读全文

博文 2019-05-13 19:34:52 Steven_25bb

Go_21: Golang 中 time 包的使用二

常量声明: const TimeLayout = "2006-01-02 15:04:05" 这是个奇葩,必须是这个时间点,据说是 go 诞生之日, 记忆方法:6-1-2-3-4-5 1. 获取当前时间戳 func GetCurrentSystemTimestamp() int64 { return time.Now().Unix() } 2. 获取当前 string 时间 func GetCurrentSystemTimeStr() string { return time.Now().Format(TimeLayout) } 3. 时间戳 转 string时间格式 func Timestamp2StandardTimeStr(timestamp int64) string { retur...阅读全文

博文 2017-11-14 07:00:01 liang1101

PoW工作量证明

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 PoW是Proof of Work的缩写,即工作量证明的意思。在《拜占庭将军问题》中介绍过,比特币系统中引入了“工作量”的概念,有意降低了信息传递的效率,让矿工必须完成一定的工作量,才能够在全网广播消息。 (孩子第一次为我的文章配图,厉害吧) 以工地的搬砖任务为例,一群工人们(矿工)向火车的车皮(区块)里搬砖,每个工人身边都有一个集装箱,这个集装箱与火车车皮一样大,正好能够装满1000块砖。 工人们只能往集装箱里搬砖,谁先装满集装箱,就把这个集装箱放到车皮里,领取12.5元的工钱(实际上并不是马上拿走,100节车皮之后才能真正取走)。只有第一个搬完的工人能够获得奖励,在这个集装箱放入车皮的同时,其他工人的集装箱里...阅读全文

博文 2019-09-19 15:02:59 链客

用 Go 构建一个区块链 -- Part 6: 交易(2)

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。 引言 在这个系列文章的一开始,我们就提到了,区块链是一个分布式数据库。不过在之前的文章中,我们选择性地跳过了“分布式”这个部分,而是将注意力都放到了“数据库”部分。到目前为止,我们几乎已经实现了一个区块链数据库的所有元素。今天,我们将会分析之前跳过的一些机制。而在下一篇文章中,我们将会开始讨论区块链的分布式特性。 之前的系列文章: 基本原型 工作量证明 持久化和命令行接口 交易(1) 地址 本文的代码实现变化很大,请点击 这里 查看所有的代...阅读全文

博文 2017-11-12 13:04:46 liuchengxu

BitKan

梅克尔树(Merkle trees)是区块链的基本组成部分。虽说从理论上来讲,没有梅克尔树的区块链当然也是可能的,你只需创建直接包含每一笔交易的巨大区块头(block header)就可以实现,但这样做无疑会带来可扩展性方面的挑战,从长远发展来看,可能最后将只有那些最强大的计算机,才可以运行这些无需受信的区块链。 正是因为有了梅克尔树,以太坊节点才可以建立运行在所有的计算机、笔记本、智能手机,甚至是那些由Slock.it生产的物联网设备之上。那么,究竟梅克尔树是如何工作的呢,它们又能够提供些什么价值呢,现在以及未来的? 首先,咱们先来讲点基础知识。梅克尔树,一般意义上来讲,它是哈希大量聚集数据“块”(chunk)的一种方式,它依赖于将这些数据“块”分裂成较小单位(bucket)的数据块,每一...阅读全文

博文 2017-12-06 03:34:43 谈谈以太坊的Merkle树

BDEX知识科普之跨链的本质

本文引自《VNTChain研究院》 跨链的本质是什么? 跨链的实现是一个较为复杂的过程,目前主流的跨链技术包括:公证人模式(主要包括中心化公证人机制和多重签名公证人机制)、侧链(Sidechains)/中继(Relays)模式、哈希锁定模式,对此已有许多文章及报告进行了详细讲解,就不再和大家赘述。接下来我想着重与大家探讨跨链的本质。 1.跨链类型 从跨越的区域范围,可以分为链内跨链与链外跨链。链内跨链,即指同一区块链底层基础平台,通过跨链技术实现平台内的联盟链与联盟链、公有链与联盟链的优势融合,从而实现价值流转与信息交互,满足商业场景需求。链外跨链则是基于不同区块链底层基础平台进行跨链交互。从跨越的区块链底层基础平台类型,可以分为同构链跨链与异构链跨链。同构链通指采用同一底层协议(包括安全机...阅读全文

博文 2019-09-05 15:32:58 逗币狗

Bystack的高TPS共识算法

共识算法是分布式系统保证节点数据状态一致性的方法,在区块链的共识算法分POW(工作量证明)和POS(权益证明)两大类。第一类POW模式是在公链项目中运用的最广泛应用的共识算法,比特币长达10年的运行已充分证明POW的安全性与稳定性。POW的特性是将去中心化与安全性发挥到了极致,但却牺牲了性能。 如比特币的峰值TPS为3.87, 平均每笔交易被打包入块需要10分钟;比原链的峰值TPS为36.32,平均每笔交易被打包入块需要2.5分钟。第二类的POS模式是由通过算法来选择出块共识节点,多用于联盟链和一些追求高TPS的新公链项目中。POS的特性是通过支持更小的出块间隔来达到最优的性能,但却牺牲了部分的安全性与去中心化。 Bystack是一个基于主侧链架构的区块链BaaS平台,将区块链分为Layer...阅读全文

博文 2019-05-27 15:34:41 比原链Bytom

2020 区块链 golang 版本(5)

封面 协议 如果发行数字货币也采用中心机构以发行传统货币的方式来发行数字货币,可能会存在哪些问题。其中一个最大问题就是双花问题,也就是用户通过复制数字货币(文件)形式进行多次支付。术语上称为花两次攻击(double spending attack)。要解决双花问题,可以由中心结构对数字货币加编码,中央结构需要维护一张表来记录每一个数字货币的去向,也就是每张货币的所有者。这样做势必带来繁重工作,如果采用去中心化的比特币来通过挖矿来实现对发币的控制。 通过维护数据结构记录并查询每一个数字货币的去向,只不过现在的数据结构不是由中央结构来维护而是由每一个节点来共同维护。这个数据结构就是区块链。 比特币交易中都需要输入(input)和输出(output)两个部分 输入部分要说明币的来源 输出部分需要给...阅读全文

博文 2020-04-26 21:32:45 zidea

​使用BSN一天学会区块链开发-C#篇

作者:曹国波《使用BSN一天学会区块链开发》系列文章可以帮助具有一定开发经验的开发者,在不需要学习区块链开发语言的情况下,在区块链服务网络(BSN)上完成区块链应用的开发。本文主要介绍用户如何通过链下业务系统使用C#语言与链上数据进行交互而进行的相关操作流程说明,但在说明链下业务系统与链上进行数据交互之前,首先对用户如何在区块链服务门户注册、应用发布服务、应用服务参与以及应用管理进行一一说明。注册和登录打开区块链服务网络网址:www.bsnbase.com, 点击登录页面中的【内测申请】按钮进入内测申请页: 根据页面中的提示填写内测申请信息并提交内测申请,内测申请用户分为个人用户和企业用户两种,申请人应根据自己的用户类型任选一种进行申请, 内测申请提交后需等待系统审核,待系统审核通过后将向申...阅读全文

博文 2020-01-08 19:33:22 区块链服务网络BSN

区块链概念 That You Must Know 第四期(3)

第四期 简介go语言下挖矿难度的代码实现(3) 卡酷少Wechat:13260325501 经过之前所有的铺垫,这一期我们将对难度的代码实现作出简单演示。(以下是在不考虑近期各机构对于区块存储信息改进的情况下。对于区块信息的调整,有比如“隔离验证”等方法。暂时不了解没有关系,本期并不涉及这点。之后随着学习的深入,我们会一一介绍给大家。) 本期我们将对上期图二中几项信息给出示例,然后代码模拟难度的实现。 区块里的哈希是如何产生的? 如第四期(1)篇里讲到的,每个区块里包含了index,current hash,previous hash,timestamp,data,nounce等信息。current hash,就是将剩下的其他信息拼接成字符串,然后将这个字符串进行哈希的结果。正如上一个区块的...阅读全文

博文 2018-05-10 23:34:38 kakushao