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

Derek解读Bytom源码-创世区块

作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本章介绍Derek解读-Bytom源码分析-创世区块 作者使用MacOS操作系统,其他平台也大同小异 Golang Version: 1.8 创世区块介绍 区块链里的第一个区块创被称为创世区块。它是区块链里面所有区块的共同祖先。 在比原链中创世区块被硬编码到bytomd中,每一个比原节点都始于同一个创世区块,这能确保创世区块不会被改变。每个节点都把创世区块作为区块链的首区块,从而构建了一个安全的、可信的区块链。 获取创世区块 ./bytomcli get-block 0 { "bits": 21...阅读全文

博文 2018-09-11 16:35:11 比原链Bytom

超干货:XDAG是什么?DAG+PoW

本期速览XDAG既拥有DAG的高并发,又拥有PoW带来的安全性和去中心化。本期Frozen从底层原理讲述了XDAG,那么它究竟有哪些特性?未来的发展方向又会如何?主讲嘉宾 项目简介 XDAG是一种基于PoW共识算法和DAG技术的加密货币。XDAG是在2017年9月份前后由俄罗斯匿名数学家Daniel开始独自开发,2018年1月5日主网正式上线,2018年2月2日XDAG代码移交社区,由社区开始进行开发和维护。项目没有ICO,没有预挖,完全由社区驱动。目前社区由各国各地区的爱好者组成,社区开发者团队共有17人,分别负责核心代码开发、显卡矿机软件、钱包开发、区块浏览器、矿池脚本工具以及各种小工具开发。讲座内容1.区块链行业现状 比特币开创了区块链的先河,公认是 区块链1.0时代,Ethereum...阅读全文

博文 2018-09-26 14:34:48 计然区块链研究院

兄弟连区块链培训教程分享持久化

兄弟连区块链培训教程分享持久化:数据库选型、直到现在,我们的区块链实现中还没有用到数据库,我们只是把每次启动程序计算得到的区块储存在内存中。我们不能复用一个之前生成的区块链,也不能与他人分享,因此,现在我们要把它存在磁盘上。那该选择什么样的数据库?其实任何一种都可以。在比特币文档中,没有说要一个具体的数据库,所以这取决于开发者。Bitcoin Core用的是LevelDB。本篇教程中使用BoltDB。BoltDBBoltDB有如下特性:1. 小而简约2. 使用Go实现3. 不需要单独部署4. 支持我们的数据结构它的Github中这样描述Bolt is a pure Go key/value store inspired by Howard Chu’s LMDB project. The go...阅读全文

博文 2018-09-26 18:34:42 兄弟连区块链培训

兄弟连区块链技术培训分享Go语言安装和部署

互联网二十多年,已到十字路口。区块链出现前的互联网被称为古典互联网,而应用区块链技术的互联网才进入了后互联网时代。作为一项新兴的技术,区块链无疑正处于风口浪尖之上,其发展前景于普通大众而言也终将是利好。但目前由于区块链技术处于发展早期阶段,存在技术成熟度、落地应用场景有限等问题,兄弟连教育建议用户在选择专业Go语言+区块链培训机构前应进行仔细考量与辨别。安装golangGOROOT 理论上只要定义这一个环境变量就可以玩了,go编译的时候会首先在安装目录下寻找包GOBIN 如果不定义的话,默认是$GOROOT/bin 如果想不切换目录执行go的命令的话.需要将$GOBIN 加入到PATH目录中.这个你懂的GOPATH 一般是你的开发目录,可以有多个.多个目录的时候Windows是分号,Linu...阅读全文

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

Fabric 学习二:系统架构

1、功能架构如下图所示。 image.png 从中可以看出包括三大组件:区块链服务(Blockchain)、链码服务(Chaincode)、成员权限管理(Membership)。 1.区块链服务 区块链服务提供一个分布式账本平台。一般地,多个交易被打包进区块中,多个区块构成一条区块链。区块链代表的是账本状态机发生变更的历史过程。 交易 交易意味着围绕着某个链码进行操作。 交易可以改变世界状态。 交易中包括的内容主要有: 交易类型:目前包括 Deploy、Invoke、Query、Terminate 四种; uuid:代表交易的唯一编号; 链码编号 chaincodeID:交易针对的链码; 负载内容的 hash 值:Deploy 或 Invoke 时候可以指定负载内容; 交易的保密等级 Con...阅读全文

博文 2019-03-06 21:34:41 张凯_9908

兄弟连区块链培训分享Go语言string转换数组

兄弟连教育建议,用户在考虑培训周期时要切实结合自身目前所掌握的区块链知识的多少、培训的目的是简单的认知提升还是借此高薪就业等等。兄弟连Go全栈与区块链培训课程设置为5个半月共计22周的学习时长,由浅入深进行讲解,助力于小白用户向区块链工程师的转型。 课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。在golang中, 有数组和切片两种类型. 切片是引用类型,而数组是值类型. 如果想在函数中传入数组的指针参数, 则必须指定数组的数量, 如func stringToRuneArr(s string, arr *[5]rune) 如果去掉 ar...阅读全文

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

golang[47]-区块链-比特币交易

比特币的交易第一笔交易比较特殊,他是coinbase交易,矿工的收益。金额每4年减少一半,从2009年一开始一个区块奖励50BTC、后来减少为了25个BTC、一直到18年 12.5BTC。总共有2100万BTC。交易和我们的银行的转账非常不同,比特币中没有记录账户的信息、而是交易的信息。go实现交易 demo本文链接: https://dreamerjonson.com/2018/12/13/golang-47-blockchain-transation/版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处...阅读全文

博文 2019-02-21 15:36:15 jonson_jackson

使用truffle部署以太坊智能合约到区块链

truffle是以太坊(ethereum)开发智能合约(smart contract)过程中最受欢迎的框架,本教程来安装构建一个基本的Truffle项目并部署一个智能合约到区块链。 开始本文之前希望你已经了解区块链、以太坊、智能合约等基本概念。 # 安装 Truffle 安装 Truffle 框架非常的简单,只需要一行命令: ``` npm install -g truffle ``` 当然前提是你已经安装好了NodeJS并且版本要在5.0以上。 Tunffle还要求一个运行的以太坊客户端,以便支持标准的JSON RPC API,有很多的选择比如Ganache、geth。 # 构建一个Truffle项目 要使用大量的Tunffle命令,我们通过使用一个现成的Tunffle项目来学习。第一步是...阅读全文

博文 2018-06-15 14:54:34 hubwiz

go公链实战0x03数据持久化

上一节学习了基于go语言的数据库boltDB的基本使用,这一节用boltDB实现区块链的数据持久化。 存储方式 区块链的数据主要集中在各个区块上,所以区块链的数据持久化即可转化为对每一个区块的存储。boltDB是KV存储方式,因此这里我们可以以区块的哈希值为Key,区块为Value。 此外,我们还需要存储最新区块的哈希值。这样,就可以找到最新的区块,然后按照区块存储的上个区块哈希值找到上个区块,以此类推便可以找到区块链上所有的区块。 区块序列化 我们知道,boltDB存储的键值对的数据类型都是字节数组。所以在存储区块前需要对区块进行序列化,当然读取区块的时候就需要做反序列化处理。 没什么难点,都是借助系统方法实现。废话少说上代码。 序列化 //区块序列化 func (block *Block...阅读全文

博文 2018-06-24 20:34:39 chaors

2020 区块链 golang 版本(6)

封面 输入脚本和输出脚本 输入脚本(BitCoin Script) 所谓校验,就是当前输入脚本和比特币来源的输出脚本拼接后是否能够给顺利执行。如果能够顺利执行才能够说明交易有效。 输出脚本 实际中每一个区块包含许多笔交易,这些交易就组织成 Merkle Tree, 区块头和区块体 每一区块分为区块头和区块体两个部分。 区块头 区块头中包含比特币宏观信息,例如使用比特币哪一个版本的协议 Version PrevHash MerkleRoot target nonce Version 表示版本号,PrevHash 保存指向前一个区块的 hash 值,MerkleRoot 是表示交易的MerkleTree 的根节点。其实 target 和 nonce 是挖矿相关的,target 表示挖矿难度值而 ...阅读全文

博文 2020-04-28 03:32:56 zidea

用Go写区块链(一):Go环境配置

最近在学习Golang语言与区块链,将一步一步的把学习的知识和经验进行总结。 下面我们开始!(一)Go的环境配置 网上有很多的环境配置教程,这里推荐一个连接查看: Golang 入门系列(一)Go环境搭建 - Go语言中文网 - Golang中文社区(二)IDE的选择 推荐: 1、Golang GoLand: A Clever IDE to Go by JetBrains (收费) 2、LiteIde LiteIDE X (免费) 下载好Go,安装好开发的IDE ,开始Go与区块链的学习之旅...阅读全文

博文 2019-05-13 17:34:55 八爪星球

使用 Go 语言打造区块链(二)

使用 Go 语言打造区块链(二) 介绍 在上一篇文章中,我们构建了一个非常简单的数据结构,这是块链数据库的本质。 而且我们可以用它们之间的链式关系向它添加区块:每个区块与前一个链接。 唉,然而在现实中添加一个区块添加到链是艰巨的工作。 工作证明 块链的一个关键思想是,必须通过工作证明才能将数据放入其中。这是一个艰巨的工作,使块链安全和一致。此外,这笔辛苦的工作也得到了奖励(这是人们获得采矿硬币的方式)。 这种机制与现实生活中的机制非常相似:人们必须工作获酬劳励并维持生命。在网络中,网络的一些参与者(矿工)努力维持网络,为其添加新的块,并为他们的工作获得奖励。作为其工作的结果,块以安全的方式并入到块链中,这保持了整个块链数据库的稳定性。值得注意的是,完成工作的人必须证明这一点。 这个整体“努力...阅读全文

博文 2017-10-14 13:04:46 胖虎晓顿_黄希平

兄弟连区块链培训带你实战GO案例(52)Go数值

区块链技术的火热是币圈内外的人都有目共睹的,可是当我们讲到这项技术究竟有多火的时候却不知道该如何说明。其实,这并不是很难,如果大家从该领域的就业市场变化入手,我们就能很快弄明白区块链技术到底有多火。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。 Go数值 Go有很多种数据类型,包括字符串类型,整型,浮点型,布尔型等等,这里有几个基础的例子。 packagemain import"fmt" funcmain(){ //字符串可以使用"+"连接 fmt....阅读全文

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

以太坊教程:搭建环境、编写编译一个智能合约

本以太坊教程主要是介绍:搭建一个开发环境、编写编译一个智能合约。 ### 以太坊是什么 以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(“以太虚拟机” Ethereum Virtual Machine)来处理点对点合约。 以太坊的概念首次在2013至2014年间由程序员Vitalik Buterin,受比特币启发后提出,大意为“下一代加密货币与去中心化应用平台”,在2014年通过ICO众筹得以开始发展。目前以太币是市值第二高的加密货币,仅次于比特币。 ### 以太坊区块链是什么? 以太坊区块链有 2 个主要组件: - 数据存储:网络中每笔交易都存储在区块链上。当你部署合约时,就是一笔交易。当你执行合约功能时,也...阅读全文

博文 2018-05-23 14:40:01 hubwiz

ACM Queue 顶级论文:厘清关于区块链、比特币的所有误区

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 当前,对于区块链,大部分人都存在些许在基本认知维度的误区,譬如直接将区块链等同于比特币、所有 ICO 都是骗局等,即使是对技术人而言,都还没搞清楚区块链的代码和算法,更遑论涉及到实际场景应用的实践。日前,国际计算机学会期刊 ACM Queue 发表论文,追本溯源,对比特币及其底层技术 —— 区块链的技术栈进行了系统的梳理和论证,由此发现,比特币的几乎所有技术组成部分都源于 20 世纪 80、90 年代的学术文献,如分布式账本和拜占庭协议,便可追溯到 20 多年前,这不是任何突破,只是学术文献中长期被遗忘的解决方案。ACM Queue 的文章中指出:“这不是为了削减中本聪的成就,而是指出他其实是站在巨人的肩膀上。实...阅读全文

看清区块链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 虽然说比特币系统于2009年推出,但区块链技术自2015年才兴起,到今天也就两年多一点的时间。 比特币系统是把多种技术组合创新,实现了一个防止篡改、防止欺诈的多方记账机制,构建起一个平等、协作、信任的价值传输网络。而区块链技术从比特币系统中被挖掘出来,经过二次创新和发展,瞄准的是解决现实场景中的问题。 当前区块链构想的运行环境与现实世界之间还存在一个鸿沟。现实中很难找到像比特币一样封闭的体系,产生在网络中、流转在网络中、消失在网络中。它既不接收外部世界的输入,也不对外部世界产生输出。每10分钟产生一个区块,生成一定数量的新比特币,流转不定数量的旧比特币,就像一个数字货币游戏一样。现实中不管是跨境汇款,还是票据流转...阅读全文

博文 2019-09-12 17:32:45 链客

golang[35]-区块链-私钥公钥生成

1234567891011121314151617181920212223242526272829303132//生成私钥和公钥func newKeyPair() (ecdsa.PrivateKey,[]byte){ //生成椭圆曲线, secp256r1 曲线。 比特币当中的曲线是secp256k1 curve :=elliptic.P256() private,err :=ecdsa.GenerateKey(curve,rand.Reader) if err !=nil{ fmt.Println("error") } pubkey :=append(private.PublicKey.X.Bytes(),private.PublicKey.Y.Bytes()...) return *pr...阅读全文

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

求教数据结构,golang实现出栈入栈覆盖第一个元素

**这个程序有问题,将元素入栈时,会覆盖第一个元素,最后栈中只留下一个2,求大神解答** ```go package main import ( "log" "fmt" ) type Stack struct { size int64 //栈的容量 top int64 //栈顶 data []interface{} } func MakeStack( size int64) Stack{ s :=Stack{} s.size=size s.data =make([]interface{},size) return s } //入栈,空间不足,逐段升高 func (s Stack) Push(e interface{}) bool{ if s.IsFull(){ log.Printf("栈满,...阅读全文

博文 2018-01-24 17:05:46 yinshidaoshi

golang[41]-区块链-默克尔树构建

大自然的启示Banyan树的启示:印度banyan树,最大的一颗可以长到1万平方米以上。其如此巨大的秘密就在于其枝干也会产生根,起到支撑,从而作为附属树干,继续生成分支。大自然给人太多启示……Merkle TreeMerkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树是一种数据结构,Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。Merkle树是使区块链发挥作用的基本组成部分。虽然理论上可以在没有Merkle树的情况下制作区块链,但只需创建直接包含每个事务的巨型块头,这样做会带来巨大的可扩展性挑战,可以说无可置疑地使用区块链的能力超出了所有范围,从长远来看,功能强大的电脑。...阅读全文

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

如何选型企业级DLT平台?【分布账本技术】

企业分布账本技术(Distributed Ledger Technology)需要解决5个方面的挑战:数据隐私性、技术正当性、可伸缩性、最终一致性和互操作性。本文将对企业以太坊(Quorum)、Hyperledger Fabric和Corda就这些环节进行比较。 在这里插入图片描述 如果希望快速掌握区块链应用的开发,推荐汇智网的区块链应用开发系列教程, 内容涵盖比特币、以太坊、eos、超级账本fabric和tendermint等多种区块链,以及 java、go、c#、nodejs、python、php、dart等多种开发语言。 1、数据隐私性 应该说绝大多数机构都不会愿意与市场中的对手分享其竞争优势。如果竞争对手可以访问区块链上的企业私有数据,那么相信绝大多数企业都不会选择这种区块链技术。因...阅读全文

博文 2019-08-18 05:32:43 ezpod

Go语言与区块链——阶段性学习建议

2019年Go语言与区块链 链接: https://pan.baidu.com/s/1rtstZKws3t9L8bcFZmUd3Q 提取码: gx1r 阶段一:区块链主流语言:Go语言开发实战 本阶段需要掌握Linux和Windows双系统开发环境,建立面向对象思维,能对问题进行抽象归类。掌握基础的并发理论。 主要内容包括有:Go语言介绍及开发环境搭、基础类型、运算符、流程控制、函数、工程管理、复合类型、面向对象编程、异常处理、文本文件处理、案例:开发实战。 阶段二:区块链后端技术体系:Go语言高并发服务器开发 区块链知识体系,是后端编程的知识体系。以太坊,瑞波币,比特币目前主流的区块链成型项目多数都是选择Go语言和C++语言实现,所以搭建后端服务编程知识体系才是打好区块链开发的首选基石,对...阅读全文

博文 2019-05-23 21:35:09 自学号

windows系统下VSCode设置golang run *.go

windows系统下,golang运行代码文件不能实现go run *.go,经过查看vscode和批处理命令,终于实现windows系统下vscode可运行go run *.go。具体步骤如下:1.在源码文件夹下建立批处理文件run.bat,内容如下:@echo offset ff=go runfor %%f in (*.go) do set ff=!ff! %%fcall %ff%2.设置vscode用户区配置文件,.vscode文件夹下tasks.json文件,内容如下:{ "version": "0.1.0", "windows":{ "command": "cmd.exe", "isShellCommand": true, "showOutput": "always", //单一g...阅读全文

博文 2017-09-29 23:04:55 了无痕150

以太坊开发(二十八)在Windows服务器上使用Geth同步以太坊主网区块

1.前言 使用Geth同步以太坊主网区块的文章已经很多了,这篇文章不会讲的太详细了。 我们将在Windows Server 2012 R2安装Geth,启动节点同步区块,并且使用JSON RPC方式查看节点和同步情况。 2. 安装Geth 2.1 安装Go 首先需要安装Go语言环境。下载地址:https://golang.org/dl/。 下载windows版本然后安装,我在D盘根目录下新建了一个文件夹go,然后指定安装在此文件夹中。系统会默认设置好环境变量。 检查是否成功安装: PS C:\Users\Administrator> go version go version go1.11 windows/amd64 2.2 安装Geth 下载地址:https://geth.ethereum...阅读全文

博文 2018-10-18 16:34:45 yuyangray

超级账本08--区块链应用开发

简介 数字货币曾是区块链技术的唯一应用场景 对智能合约的支持突破了场景限制, 丰富了区块链应用的适用范围, 可以支持多行业、大规模的商业应用 区块链应用 区块链应用: 一般由若干部署在区块链网络中的智能合约, 以及调用这些智能合约的应用程序组成 用户专注于与业务本身相关的应用程序 智能合约则封装了与区块链账本直接交互的相关过程, 被应用程序调用 智能合约开发 智能合约本质上是为了对上层业务逻辑进行支持且直接与账本结构打交道, 处于核心位置. 所以设计得当可以简化上层应用开发的过程 应用程序开发 应用程序通过调用智能合约提供的方法接口实现业务逻辑, 可以使用JavaScript、Python、Go、Java等主流语言进行开发 链码的原理 链码延伸自智能合约的概念, 支持使用主流高级编程语言实现...阅读全文

博文 2018-07-23 14:34:51 陆地潜水鱼

golang[47]-区块链-比特币交易

比特币的交易第一笔交易比较特殊,他是coinbase交易,矿工的收益。金额每4年减少一半,从2009年一开始一个区块奖励50BTC、后来减少为了25个BTC、一直到18年 12.5BTC。总共有2100万BTC。交易和我们的银行的转账非常不同,比特币中没有记录账户的信息、而是交易的信息。go实现交易 demo123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101...阅读全文

博文 2018-12-14 23:36:00 jonson_jackson

北京招聘GO/区块链开发工程师

(熟悉Go语言或者研究区块链方向择其一亦可) 岗位描述: 1.负责基于区块链技术联盟链、私有链的架构设计与核心代码开发 2.持续跟进区块链技术在数字货币、智能合约等方向的发展,及相关技术的研究 3.积极探索区块链技术在金融方向新的落地场景,为公司业务发展提供持续支撑 岗位要求: 1.掌握Bitcoin,Ethereum,HyperLedger Fabric等主流区块链技术相关机制与原理; 2.熟练掌握Go,Java,C++等主流区块链系统开发语言至少一种,Go优先,参与过区块链开发社区并贡献源码者优先; 3.了解一些主流NoSQL数据库的原理与使用,尤其是KV型数据库,包括不限于LevelDB,RocksDB等; 4.熟悉Linux操作系统,熟练掌握Docker容器技术的原...阅读全文

golang 中mongodb利用时间戳进行分组统计

话不多说,直接先上代码: // StatGameActive 游戏活跃人数 func StatGameActive(start, end int64, gameID string) map[string]int { type resp struct { Date string `bson:"date"` Count int `bson:"count"` } var ( m career.GameLoginLog data []resp rs = make(map[string]int) ) where := bson.M{"created_at": bson.M{"$gte": start, "$lte": end}, "game_id": gameID} dateBson := bson....阅读全文

博文 2020-06-02 17:32:51 diamonds_A

你想深度拥抱区块链吗,都是什么开发语言呢?

区块链技术虽然出来也有段时间了,但是都是从一些基本的概念去了解,去学习,用原有的开发语言去理解区块链的相应的技术点,并没有真正的使用区块链开发语言去开发。去深入了解区块链的知识及原理呢?那我们怎么选择或者学习区块链的开发语言呢?因为各种语言有自己的擅长的地方,所以我们肯定要选择一种比较适合的语言。 我们来了解一下当前区块链中使用的语言有那些呢?都有什么实际的运用。C++开发语言(比特币、公正通、瑞波ripple),GO开发语言(以太坊、IBM),Solidity开发语言(以太坊)。 首先我们来看C++,C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时...阅读全文

博文 2019-05-18 11:34:38 搬砖人1314

[深圳] 优畅-ULINE 招聘区块链开发工程师 15-25K

### 技能要求: 1.负责基于区块链(Blockchain)、以太坊(Ethereum)、EOS 的互联网金融产品的设计和研发,含后端协议、基础架构、系统服务及其相关客户端; 2.开发、实现和改进加密协议,设计安全协议和架构; 3.负责研究区块链、以太坊以及EOS的底层协议,运行机制和底层实现等; 4.负责对研发项目进行完善的安全模块设计与开发。 ### 岗位要求: 1.计算机相关专业学历; 2.熟练掌握一门或多门GoLang,Ruby,Python,C++ 等主流区块链系统开发语言,参与各个区块链开发社区并贡献源码者优先; 3.了解一些主流NoSQL数据库的原理与使用,尤其是KV型数据库,包括不限于LevelDB,RocksDB等; 4.熟悉linux操作系统; ...阅读全文

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

区块链教程区块链信息安全3椭圆曲线加解密及签名算法的技术原理一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 # 椭圆曲线加解密及签名算法的技术原理及其Go语言实现 椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。 相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。 据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。 椭圆曲线在密码学中的使用,是1985年由Neal Koblitz和...阅读全文

博文 2018-11-09 13:51:31 ITXDL

兄弟连Go语言培训清华尹成带你实战GO案例(53)Go数值

兄弟连Go语言培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。 兄弟连Go语言培训清华尹成带你实战GO案例(53)Go数值 Go数值 Go有很多种数据类型,包括字符串类型,整型,浮点型,布尔型等等,这里有几个基础的例子。 packagemain import"fmt" funcmain(){ //字符串可以使用"+"连接 fmt.Println("go"+"lang") //整型和浮点型 fmt.Println("1+1=",1+1) fmt.Println("7.0/3.0=",7.0/3.0) //布尔型的几种操作符 fmt.P...阅读全文

博文 2018-07-31 11:34:49 兄弟连区块链培训

完成比完美更重要?仅知道这句话可不够

导读 都说完成比完美更重要! 软件开发模式经过多年的演化,从传统的瀑布开发模型升级到了敏捷开发模型。 而到了互联网时代,迭代再次加快,产品直接是在互联网上生长。 然而,做产品总是要先出一个版本,再不断迭代,那从0到1的第一步应该怎么走?后续的迭代又应该如何演进呢? 重点笔记 迭代就是小步快跑,把最内核的部分先放出来,不断优化、小范围试错。 版本规划能力是产品经理的重要能力。 判断一个产品经理是否厉害,很重要的一条就是判断他设计的产品第一个版本有多简单、直接、切中要点,能不能直指人心。 产品复杂是因为产品经理不自信,只能从附加功能中找心理安慰。 产品设计应该找到内核,小步快迭代,而不是憋大招。 迭代中,重要的是次序,前一个动作是后一个动作的预动作。 迭代的价值: 对外部,可以快速得到用户的反馈...阅读全文

博文 2018-09-21 23:34:39 海之方

详解golang中bufio包的实现原理

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

博文 2019-10-30 22:33:04 aside section._1OhGeD

区块链兼容以太坊智能合约

链客,专为开发者而生,有问必答!此文章来自[区块链技术社区](https://www.liankexing.com),未经允许拒绝转载。 引言随着区块链技术以及应用的普及,越来越多的区块链出现在大众视野中。由于区块链技术的开源特性,任何公司和个人都可以方便快捷的获取最新的区块链核心技术,通过对这些技术的选择和整合,最后开发和搭建满足特定业务需求的区块链产品。以太坊作为目前区块链2.0的杰出代表被作为诸多区块链项目开发的基础,甚至有人统计100个区块链项目中有94个是基于以太坊,而以太坊社区更是有25万的开发者在活跃着,因此以太坊成为大家争相研究和进行区块链开发的典型。EVM作为以太坊中重要的组件,其运行着以太坊上至关重要的智能合约,由于以太坊庞大的社区和经济环境,作为一个新出现的区块链兼容以...阅读全文

博文 2019-08-19 20:02:48 链客区块链技术问答社区

Blockchain 区块链基于go-ethereum实现的dpos共识算法

## Dpos Go Ethereum Dpos Go Ethereum is a project base on [go-ethereum](https://github.com/ethereum/go-ethereum). It's a product when I have learning go-ethereum. Up to now, I write a Dpos consensus algorithm. I use header extra to wrap Dpos related information. Because nlp cannot encode complex type, therefore I chose json struct. Although it'...阅读全文

开源项目 2021-02-04 22:27:54 mingjingc

为什么区块链编写都用GO语言?CX将是一次革新!

载:https://mp.weixin.qq.com/s/wG2uQJxzP5uZLHM8r9Ac_w所有链圈的朋友都该有的常识:Go语言现被用来做去中心化系统(decentralised system)。 当然,其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。长期项目中的易维护代码Go语言很简单。并且每次你中途休息(cessation)之后回到代码中时,它没有那么多诡异的错误(quirk)来浪费你的时间。再加上,它所需要的学习量很少,因为它的语法比较大众,开发者的学习曲线很平缓,这样的特性本身就很吸引开发者。这也导致(facilitate)出现Bug的几率很低。所以整个开发过程显得如此简单快速。一般来讲,代码量越多,项目越难维护。而一个区块链系统需要的代码...阅读全文

博文 2018-11-08 00:34:41 一一个个

轻松学习区块链5 - 工作量证明POW

## MiniBC区块链V004 - 工作量证明POW # #### 共识算法 在整个区块链工作过程中,会有很多的机器加入其中,每一台机器成为一个节点,它们互相协作,来共同维护区块链的安全和数据的一致。其中,生成新的区块就是一项很重要的工作。因为新的区块里面包含很多新产生的重要数据,比如交易信息等。为了让这项工作有序和可控,通常会在所有节点上通过竞争选出一个节点,由这个胜出的节点负责打包新产生的数据,并通知和传播给其它节点。 通过竞争选择优胜者的机制称为共识算法,目前主流加密货币引入了很多共识算法,比如pow, pos, dpos, pbft等等。象比特币就是采用了pow算法,也就是工作量证明。 #### 工作量证明 工作量证明 (Proof Of Work,简称POW),就是用来确认你做过...阅读全文

博文 2019-05-20 13:03:46 wangshizebin

拜占庭容错系统简介

拜占庭容错系统简介 原始的拜占庭容错系统由于需要展示理论上的可行性而缺乏实用性。另外,算法的复杂度也是随节点的增加而呈指数级增加。实用拜占庭容错系统(Practical Byzantine Fault Tolerance, PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别,使拜占庭协议在分布式系统中应用成为可能。 什么是实用拜占庭容错系统 实用拜占庭容错系统是一类“状态机”拜占庭系统(这里的状态机可以理解为“系统状态”,以区块链记账为例,系统每新增一个区块,账本就更新到一个新的状态。前面讲过,拜占庭容错系统是一个强一致性协议,每次记账后系统都会达成新的状态。),要求系统所有节点共同维护一个状态,所有节点采取的行动一致。 实用拜占庭容错系统需要运行三类基本协议: 一致性协议:...阅读全文

博文 2018-08-06 11:34:52 kakushao

Go基础学习-goroutine

Go语言核心部分就一个关键字go package main import ( "fmt" "runtime" "time" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) c := make(chan int, 10) go func() { for i := 0; i < 20; i++ { c <- i fmt.Println("write", i) } close(c) }() for v := range c { fmt.Println("read", v) time.Sleep(1 * time.Second) } } make创建chanel的时候可以指定是否有缓存,有缓存的chanel在缓冲区被填满之前是不会阻塞的...阅读全文

博文 2015-12-21 19:00:15 blueln

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

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

博文 2019-05-19 23:12:23 wangshizebin

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

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。 引言 交易(transaction)是比特币的核心所在,而区块链的唯一目的,也正是为了能够安全可靠地存储交易。在区块链中,交易一旦被创建,就没有任何人能够再去修改或是删除它。在今天的文章中,我们将会开始实现交易这个部分。不过,由于交易是很大的话题,我会把它分为两部分来讲:在今天这个部分,我们会实现交易的通用机制。在第二部分,我们会继续讨论它的一些细节。 此外,由于代码实现变化很大,就不在文章中罗列所有代码了,这里 可以看到所有的改动。 没有...阅读全文

博文 2017-11-13 11:04:40 liuchengxu

兄弟连Go语言培训区块链共识算法(1)分布式一致性算法Raft

兄弟连Go语言培训培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。 # 分布式一致性算法Raft Paxos自1990年提出以后,相当长时间内几乎已成为分布式一致性算法的代名词。 但因其难以理解和实现,目前知名实现仅有Chubby、Zookeeper、libpaxos几种,其中Zookeeper使用的ZAB对Paxos做了大量改进。 为此,2013年斯坦福的Diego Ongaro、John Ousterhout,提出了新的更易理解和实现的一致性算法,即Raft。 Raft和Paxos均只要保证n/2+1节点正常,即可服务。相比Pa...阅读全文

博文 2018-07-31 08:40:55 XDLGo

年薪30-100W急聘“GO语言工程师、区块链开发工程师、区块链架构师、区域链首席技术官”

有兴趣的技术大牛,可以加本人微信:13826118650,此岗位均属紧急职位,只要您有实力,薪资一定能超过您的期望值。欢迎随时来聊。 工作地点:广州琶州(办公环境优美、交通便利)、中午午餐 区块链平台架构师 岗位职能: 1.负责对区块链产品解决方案架构进行设计,并参与区块链技术的前瞻性技术预研; 2.负责研究Hyperledger fabric的加密技术、共识算法和底层实现; 3.参与各个区块链开发社区并贡献源码者优先;参与公司区块链底层核心模块和架构的开发; 4.参与区块链技术在行业应用中的衔接与落地。 任职要求: 1.本科及以上学历,计算机、软件等相关专业,5年以上产品架构或研发工作经验; 2.对区块链产品有深入了解,精通至少一种Hyperledger、以太坊、比...阅读全文

扣丁学堂区块链2.0技术以太坊私有链搭建和geth客户端使用

在2018年相信大多数都了解过区块链开发技术,它分为三个架构:1.0、2.0、3.0,今天我们讲的是区块链2.0技术以太坊私有链搭建和geth客户端使用的详细介绍。 ​ geth客户端的安装 使用安装包安装 sudoapt-getinstallsoftware-properties-common sudoadd-apt-repository-yppa:ethereum/ethereum sudoapt-getupdate sudoapt-getinstallethereum 使用源码编译,搭建golang的环境 1、先把go语言安装包下载下来wget 2.执行sudotar-C/usr/local/-xzfgo1.8.3.linux-amd64.tar.gz解压 3.vim~/.bashrc...阅读全文

博文 2018-07-18 14:34:58 扣丁学堂

【北京】高薪招聘--go语言开发--区块链底层方向

**本岗位薪酬高,有期权,诚邀各位GO语言高手、区块链爱好者加入** 985学校毕业,本科及以上学历,计算机编程等相关专业,年龄在25-36岁之间 岗位要求: 1.掌握Bitcoin,Ethereum,HyperLedger Fabric等主流区块链技术相关机制与原理; 2.熟练掌握Go,Java,C++等主流区块链系统开发语言至少一种,Go优先,参与过区块链开发社区并贡献源码者优先; 3.了解一些主流NoSQL数据库的原理与使用,尤其是KV型数据库,包括不限于LevelDB,RocksDB等; 4.熟悉Linux操作系统,熟练掌握Docker容器技术的原理,部署和使用优化; 5.熟悉数字加密算法,安全协议,分布式计算...阅读全文

猎头岗位--高薪诚聘GO语言--区块链底层开发方向

**本岗位薪酬高,有期权,诚邀各位GO语言高手、区块链爱好者加入** 岗位要求: 1.985学校毕业,本科及以上学历,计算机编程等相关专业,年龄在25-36岁之间; 2.掌握Bitcoin,Ethereum,HyperLedger Fabric等主流区块链技术相关机制与原理; 3.熟练掌握Go,Java,C++等主流区块链系统开发语言至少一种,Go优先,参与过区块链开发社区并贡献源码者优先; 4.了解一些主流NoSQL数据库的原理与使用,尤其是KV型数据库,包括不限于LevelDB,RocksDB等; 5.熟悉Linux操作系统,熟练掌握Docker容器技术的原理,部署和使用优化; 6.熟悉数字加密算法,安全协议,分布式计算。 **欢迎各位...阅读全文

智能合约笔记(2)区块链概念2

上一篇文章提到过账户分为两种,外部账户和合约账户.外部账户的名字应该是外部拥有账户,这里简称为外部账户.该账户和银行的账户几乎是同一个概念,由人控制,并且没有观念任何代码.而合约账户的存储是代码控制的. 合约账户存储代码,外部账户却没有,这是区别之一.外部账户请求交易,合约账户响应交易,这是区别之二.这是我目前了解到的区别.对我而言,外部账户有点像客户端,合约账户像服务端的感觉.但是不能混为一谈. 钥匙文件是定义外部账户用的,有一个公钥和私钥.账户的地址最后20个字节就是公钥,而私钥和地址都被编码在一个钥匙文件中.钥匙文件是json格式. 每个账户都由一块持久化存储区域,以键值对的形式存储.,无论是key还是value长度都是256.第一个存储区是内存,第二个存储区被称为栈. 既然账户能存储...阅读全文

博文 2018-12-06 02:34:42 周杰伦演唱会门票还有吗

以太坊智能合约Demo

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力。智能合约其实是“执行合约条款的计算机交易协议”。区块链上的所有用户都可以看到基于区块链的智能合约。 维基上说智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。智能合同的目的是提供优于传统合同方法的安全,并减少与合同相关的其他交易成本。 由于区块链上的所有...阅读全文

博文 2019-09-20 11:32:49 链客

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

第四期 简介go语言下挖矿难度的代码实现(4) 卡酷少Wechat:13260325501 之前的都讲完了,因为代码太多导致文章比较长。所以新增了一片。在这最后的最后,我们将把挖矿的过程最终展示在大家面前。建议大家也将代码在goland里实际跑一跑,会更有感觉。 挖矿难度的代码实现 话不多说,直接给代码实现。 /* 代码逻辑: 第一步:导库 第二步:声明并将各项值初始化,共5个数据:blockId(区块id),preHash,timeStamp(区块诞生时间),data,nounce(不明白为什么需要这些数据的同学可以找回第四期(2)篇看一下) 第三步:声明并创建一个哈希对象,shaObj 第四步:迭代调用函数isValidHashDifficulty来判断哈希值有效与否。迭代中将nounc...阅读全文

博文 2018-05-11 00:34:36 kakushao