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

golang[40]-区块链-wif倒推出私钥

wif倒推出私钥123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150...阅读全文

博文 2018-12-14 00:35:43 jonson_jackson

兄弟连区块链培训教程分享Go语言golang单链表实现

目前而言区块链是一门新兴前沿行业,但也是一门综合复杂性强的学科,学习区块链需要有一定的学习能力与知识基础。然而很多线下培训机构却只顾收取高额报名费用,将用户的实际情况置若罔闻,不设报名门槛,不对报名人员进行甄别筛选,实则是一种不负责任的态度。 兄弟连教育Go全栈与区块链培训课程已从多层面颠覆传统培训机构运营思维,区块链课程的开设在一定程度上加大了大众对这一专业领域的认知,其构建起的区块链世界也必将在未来为我们呈现更加高效的生活方式。package main//链表实现import ( "fmt" "os")//定义错误常量const ( ERROR = -1000000001)//定义元素类型type Element int64//定义节点type LinkNode struct {Data...阅读全文

博文 2018-08-31 15:37:29 兄弟连区块链培训

用 golang 实现区块链系列七 | 网络

介绍 到现在为止,我们已经实现了一个拥有所有关键功能的区块链了:匿名,安全,还有随机生成的地址;区块链数据存储;工作量证明系统;以可靠的方式存储交易。尽管这些功能很关键,但还是有不足。到底是什么会让这些功能真的闪耀起来呢,到底是什么使得加密货币成为可能呢 —— 是网络。如果一个这样牛逼的区块链只是在一台计算机上运行有什么卵用?当只有一个用户的时候,这些基于密码学的功能有啥好处?是网络使得这些机制可以工作起来,而且变得有用。 你可以把这些区块链的功能想象成教条,类似于那种人们想要一起生活成长就要遵守的教条。这是一种社会准则。区块链网络是一个遵循着同样准则的程序社区,正式这种遵循准则使得社区得以存活。这和真实世界很相似,当人们分享了类似的思想,他们就会更强而且可以一同创造更好的生活。如果有人遵循...阅读全文

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

Derek解读Bytom源码-孤块管理

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

博文 2018-08-23 11:34:50 比原链Bytom

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

最近考虑一个基于以太坊的去中心化du-场的实现,du-场如果需要实现,那么随机数是必须的。然后研究了一下以太坊里面的随机数生成,发现并不容易。 eth里面生成随机数的几种方式。 oraclize Oraclize定位为去中心化应用的数据搬运工,他作为Web APIs和DApp的可靠链接。有了Oraclize,就不需要建立额外的信任链,因为我们的行为已经被强制加密验证。Oraclize是一个可证明的诚实的预言机服务,可以让智能合约可以访问互联网。Oraclize是平台无关的,为所有主流的智能合约能力平台提供一种虚拟的接口。可以想像,通过这个投入成千上万的有意义的数据到区块链中,可以使得智能合约产业更繁荣和更多有价值的应用呈现更大的生命力。 Oraclize的使用方式可以参考下面的[代码](gi...阅读全文

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

兄弟连区块链教程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和WebAssembly:在浏览器中运行Go程序

在过去很长一段时间里,Javascript是Web开发人员中的通用语言。如果你想写一个稳定成熟的 Web 应用程序,用javascript几乎是唯一的方法。 WebAssembly(也称为wasm)将很快改变这种情况。使用WebAssembly可以用任何语言编写Web应用程序。在本文中,我们将了解如何编写Go程序并使用wasm在浏览器中运行它们。 但首先,什么是WebAssembly webassembly.org 将其定义为“基于堆栈的虚拟机的二进制指令格式”。这是一个很好的定义,但让我们将其分解为我们可以轻松理解的内容。 从本质上讲,wasm是一种二进制格式; 就像ELF,Mach和PE一样。唯一的区别是它适用于虚拟编译目标,而不是实际的物理机器。为何虚拟?因为不同于 C/C++ 二进制...阅读全文

博文 2019-01-14 10:34:40 启程

兄弟连区块链培训带你实战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

Github CI/CD With Travis CI

CI/CD 是什么这里就不多介绍了。下面是我个人使用 GItHub + Travis 集成的 CI/CD 过程总结。 开发语言:golang 开发环境:Ubuntu 18.04 1. 安装 GitHub CI 平台插件。 github 支持很多的CI应用可以跳到 这里进行选择 我这里选择的是 Travis CI 20190903222024.png 点击 Travis CI 选择 下面的 Open Source (提供免费版),并点击 Install it for free。 如下图: 20190903222237.png 2. 选择 github repositories 接着根据页面的步骤接着执行安装插件操作即可。最后在GitHub的 settings->Applications 中找到...阅读全文

{区块链教程}以太坊源码分析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 兄弟连区块链培训

LINUX, GO GO GO!

计算机组成:CPU,存储设备,I/O设备,内存 linux发行版:slackware:SUSE Linux Enterprise Server (SLES)OpenSuse桌面debian: ubuntu, mintredhat: RHEL: RedHat Enterprise LinuxCentOS:兼容RHEL的格式Fedora:每6个月发行一个新版本ArchLinux:轻量简洁Gentoo:极致性能, 不提供传统意义的安装程序Linux的哲学思想:一切皆文件 在linux系统中,目录,配置文件,硬盘等等都是用文件来表示的 linux命令:pwd:显示当前工作目录echo:回显ifconfig:查看网卡信息tty:查看当前终端startx:切换图形界面export:设置或者显示系统环境变...阅读全文

Go语言入门(十一) 接口编程

接口 接口的定义 接口定义了一个对象化的行为规范 只定义规范,不实现 具体的对象需要实现规范的细节 实践 type 定义接口 interface 接口里面是一组方法签名的集合 type Animal interface { Talk() Eat() Run() } 实现 一个对象只要包含接口中的方法,那么就实现了这个接口 接口类型的变量可以保存实现该接口的任何类型的实例 type Animal interface { Talk() Eat() Run() } type Dog struct { name string } //一个对象只要包含接口中的方法,那么就实现了这个接口 func (d *Dog) Eat() { fmt.Printf("%s is eating\n",d.name) ...阅读全文

博文 2020-04-14 20:33:15 wx5b285b48ed74e

golang快速排序改进版

package main import ( "fmt" "math/rand" ) // 如果数量小于13直接用插入排序 func SortForMerge(arr []int, left, right int) { for i:=left; i<=right; i++ { temp := arr[i] var j int for j=i; j>left && temp < arr[j-1]; j-- { arr[j] = arr[j-1] } arr[j] = temp } } func swap(arr []int,i, j int) { // 数据交换 arr[i], arr[j] = arr[j], arr[i] } func QuickSortX(arr []int, left, ...阅读全文

博文 2019-08-16 18:02:42 发条家的橙子

兄弟连区块链教程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区块链

【跟着我们学Golang】Go语言全平台安装

学习Go语言的第一步当然是要先安装Go语言的环境,毕竟,没有这个环境咱们什么都做不了。 但是在安装环境之前咱们先了解一下Go涉及到的环境变量。 这里介绍几个比较常用的Go语言环境变量。 GOROOT Go的安装路径,windows默认安装在'c:/go'路径下,Linux/macos下默认安装在'~/go'路径下 GOPATH Go 语言源码文件、包文件和可执行文件的路径,换句话说,GOPATH指定的是存放项目相关的文件路径 GOOS 电脑的操作系统标识。如Mac下为“darwin“,windows下为”windows“ GOARCH 电脑的处理器架构,如386,arm或amd64 GOBIN 编译文件的安装位置,默认$GOROOT/bin 下面开始今天的正题,安装Go环境 Go语言的安装过...阅读全文

博文 2019-04-17 21:34:41 搜云库技术团队

区块链教程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 扣丁学堂

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

区块链的数据结构是由包含事务信息的块按远近顺序排列的。块按远近顺序在这个链中链接,每个块都指向前面的块。 区块链通常被视为一个垂直堆栈,第一个块是堆栈底部的第一个块,然后将每个块放在前一个块的顶部。使用堆栈将块依次堆叠的概念可视化之后,我们可以使用一些术语,如“高度”来表示块与第一个块之间的距离;和“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 又能一直没有达到共识。这些理论我们简单了...阅读全文