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

以太坊源码分析—Ethash共识算法

Ethereum当前和Bitcoin一样,采用基于工作量证明(Proof of Work,PoW)的共识算法来产生新的区块。与Bitcoin不同的是,Ethereum采用的共识算法可以抵御ASIC矿机对挖矿工作的垄断地位,这个算法叫做Ethash。 为什么要反ASIC PoW的的核心是Hash运算,谁的Hash运算更快,谁就更有可能挖掘出新的区块,获得更多的经济利益。在Bitcoin的发展过程中,挖矿设备经历了(CPU=>GPU=>ASIC)的进化过程,其中的动机就是为了更快地进行Hash运算。随着矿机门槛地提高,参与者久越来越少,这与区块链的去中心化构想背道而驰。因此,在共识算法设计时,为了减少ASIC矿机的优势(专用并行计算),Ethereum增加了对于内存的要求,即在进行挖矿的过程中,...阅读全文

博文 2018-11-13 20:34:39 187J3X1

如何创建NEO轻客户端

自NEO品牌升级以来,社区的建设蒸蒸日上,开发者的热情与日俱增。伴随着社区的极具扩张,一些底层技术基础性教程的补充完整变得至关重要。目前很多开发者身体力行的投入到NEO技术社区生态的建设当中,比如neo-swift,它是一个可实现与NEO区块链交互功能的轻客户端,主要用Swift-4语言编写。尽管它目前是一个轻客户端,但不代表以后就不会扩展为全节点客户端。本文梳理了neo-swift的运作需要哪些支持,希望大家在读完这篇博客后能了解区块链的内里运作机制,也希望本文能激励开发者在NEO区块链上创建下一个项目。为什么?对于任何项目而言,第一个问题永远是项目的创建目的的是什么,neo-swift项目创建主要出于4个原因。1.开发者想要开发分布式iOS应用,且应用广度越来越广。2. 建立一个开发者友...阅读全文

博文 2018-10-30 05:34:42 NEO爱好者

golang并发----缓冲通道实现对象池

缓冲通道实现可复用的对象池 type reusableobj struct{} type objpool struct { bufchan chan *reusableobj } func newobjpool(numofobj int) *objpool { objpool := objpool{} objpool.bufchan = make(chan *reusableobj, numofobj) for i := 0; i < numofobj; i++ { objpool.bufchan <- &reusableobj{} } return &objpool } func (p *objpool) getobj(timeout time.Duration) (*reusableob...阅读全文

博文 2019-12-07 06:32:44 zjtriplehhh

决定以太坊未来的3个重要项目

在过去的几年里,以太坊已经成为加密货币领域最重要的项目。 作为市场中大多数代币的 底层基础设施,以太坊网络的健康对于加密数字币生态系统中的其他环节至关重要,以太坊 也一直在努力跟上增长。 交易容量一直困扰着以太坊网络,以至于许多专家推出了辅助项目 来创建替代性区块链,以便从头解决一些限制。 然而,以太坊团队并没有闲着,目前已经 有几个项目作为以太坊基金会的一部分进行孵化,重点就是解决当前版本的以太坊中的一些 基本限制。 以太坊的第二层扩容解决方案改进了以太坊网络的一些基本方面,如共识协议或其安全模型。 考虑到以太坊公共区块链的规模和活跃度,你可以想象在不中断网络的情况下实施这些增强 措施是一项巨大的挑战。 虽然以太坊网络有好几个第二层扩容项目,但有三个以及接近全面...阅读全文

兄弟连区块链入门教程以太坊源码分析hashimoto源码分析(一)

兄弟连区块链入门教程以太坊源码分析hashimoto源码分析(一),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。Hashimoto :I/O bound proof of workAbstract: Using a cryptographic hash function not as a proofofwork by itself, butrather as a generator of pointers to a shared data set, allows for an I/O boundproof of work. This method of pr...阅读全文

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

【以太坊源码解析】-区块数据结构

区块数据结构 在区块链中,区块是存储有价值信息的块。这是任何一种加密货币的本质。除此之外,区块还包含一些技术信息,比如它的版本、当前时间戳和前一区块的散列值(哈希值) Block(区块)是Ethereum的核心数据结构之一 * 所有账户的相关活动,以交易(Transaction)的格式存储,每个Block有一个交易对象的列表 * 每个交易的执行结果,由一个Receipt对象与其包含的一组Log对象记录 * 所有交易执行完后生成的Receipt列表,存储在Block中(经过压缩加密) * 不同Block之间,通过前向指针ParentHash一个一个串联起来成为一个单向链表,BlockChain 结构体管理着这个链表 * Block结构体基本可分为Header和Body两个部分 Block: 表...阅读全文

博文 2018-10-15 20:34:38 jincheng828

用 golang 实现区块链系列四 | 交易 1

介绍 交易是比特币的核心,而且区块链的唯一目标就是安全可靠地存储交易信息,而且没人可以在它们被创建之后修改它们。今天我们要开始实现交易。但是由于这是一个比较大的话题,因此我会分成两个部分:这一部分,我们会实现交易的通用机制,在第二部分会继续完成细节部分。 由于代码变化会比较大,所以没有必要全部都解释一下,你可以在这里找到所有的变化。 没有勺子 如果你曾经做个 web 应用,为了实现支付系统,可能会在数据库里创造这么几个表: accounts 和 transactions。账户表会存储用户信息,包括个人信息和余额,另一个交易标会存商品中关于钱从哪个账户转给另一个账户的信息。比特币中,支付完完全全是另一种方式。这里: 没有账户 没有余额 没有地址 没有币 没有发送者和接受者 因为区块链是一个公共...阅读全文

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

兄弟连区块链培训分享Go语言-make和new

“区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。golang 中有两个内存分配机制 :new和make,二者有明显区别. new:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。其自身是一个指针.可用于初始化任何类型 make: 返回一个有初始值...阅读全文

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

区块链 + 大数据:EOS存储

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 谈到区块链的存储,我们很容易联想到它的链式存储结构,然而区块链从比特币发展到今日当红的EOS,技术形态已经演化了10年之久。目前的EOS的存储除了确认结构的链式存储以外,在状态存储方面有了很大的进步,尤其是引入了MongoDB plugin以后,可以将功能有限的状态库搭上大数据的班车。本文将全面介绍EOS的存储技术。 EOS 存储,Merkle Tree,mongodb,chainbase,源码学习,context_free_actions EOS的链式存储结构EOS的区块数据结构如下: field explanation timestamp 时间戳 producer 生产者 confirmed 生产者确认数 p...阅读全文

博文 2019-09-16 12:32:39 链客

区块链教程Fabric1.0源代码分析Orderer multichain

区块链教程Fabric1.0源代码分析Orderer multichain,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之 Orderer #multichain(多链支持包) 1、multichain概述 multichain代码集中在orderer/multichain目录下,目录结构如下: manager.go,Manager接口定义及实现。 chainsupport.go,ChainSupport接口定义及实现。 systemchain.go,system chain。 2、Manager接口定义及实现 2.1、Ma...阅读全文

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

Golang 日期/时间包的使用

golang 的日期时间包:time 的使用方式。 time package 包含了 time.Time 时间对象 及 构建此时间对象的一些方法(time.Unix(), time.Parse()) golang 可精确到 nanosecond,故相应的函数返回值或参数都已纳秒为单位,我们可以借助time.ParseDuration(durationString string)友好的生成纳秒度量的时间跨度值 golang 的时间格式串Layout固定为 2006-01-02 15:04:05 golang 默认使用 Local 即本地时区,可以通过 time.LoadLocation(zoneName string) (*Location, error)来设定时区 时区构建/格式化模式串 /...阅读全文

博文 2019-03-12 14:34:42 big_cat

GO中 TCP 的receivebuffSize sendBufSize 第一次偶尔失效

```go tcpAddr, err := net.ResolveTCPAddr("tcp4", "localhost:8080") fmt.Println(err) server, e := net.ListenTCP("tcp", tcpAddr) fmt.Println(e) for { conn, _ := server.AcceptTCP() util.SetTCPOption(conn) } ``` ```go tcpConn := conn.(*net.TCPConn) tcpConn.SetNoDelay(false) tcpConn.SetWriteBuffer(30000) tcpConn.SetRe...阅读全文

go公链实战0x00区块链基础结构

堕落了一段时间,终于又找回了学习的动力,满血归来。。。 我们知道在如火如荼的区块链应用红海,goLang越来越多地发挥着不可替代的作用。一方面取决于其语法的简单性,一方面其具备C++高效处理的特性。今天,我们就用go语言开始构建一个简单但是具备区块链完整功能的公链项目。 由于之前已经用Python构建过简单的区块链结构,所以对区块基本结构的东西不再做详细赘述。 废话少说上干货 区块Block Block type Block struct { //1.区块高度 Height int64 //2.上一个区块HAsh PrevBlockHash []byte //3.交易数据 Data []byte //4.时间戳 Timestamp int64 //5.Hash Hash []byte } 设...阅读全文

博文 2018-06-22 21:34:38 chaors

区块链开发者教程大汇总,Php/Python/C#/Node/Go

Mixin Network是一个免费,1秒确认的高速转账网络。我们撰写了基于多种语言的系列教程,开发者可以15分钟搭建一个比特币收款应用。 教程 PHP Go Node.js C# Python 创建机器人接收发送消息 php 1 Go 1 Node.js 1 C# 1 python 1 机器人接收发送比特币 php 2 Go 2 Node.js 2 C# 2 python 2 创建比特币钱包,转账 php 3 Go 3 Node.js 3 C# 3 python 3 买卖比特币 php 4 Go 4 Node.js 4 C# 4 Mixin Network开发者资料汇...阅读全文

博文 2019-04-12 14:34:44 Mixin_Network

【区块链Go语言实现】区块链基本原型

链客,专为开发者而生,有问必答!此文章来自[区块链技术社区](https://www.liankexing.com),未经允许拒绝转载。 0x00 介绍区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力尚未被完全意识到。从本质上讲,区块链只是一种记录的分布式数据库。但它之所以独特,是因为它并不是一个私有的数据库,而是一个公共数据库,也就是说,每个使用它的人都有一份完整或部分的数据副本。并且,只有在数据库的其他持有者同意的情况下,才可以向区块链中添加新的记录。此外,正是区块链使得加密货币和智能合约成为可能。在本系列文章中,我们将基于区块链构建一种简单的加密货币。0x01 区块首先,我们从“区块链”中的“区块”介绍开始。在区块链中,区块是存储有价...阅读全文

博文 2019-08-16 12:32:43 链客区块链技术问答社区

面向 Go 开发人员的链代码深入研究,第 3 部分: 为基于 Hyperledger Fabric v0.6 的区块链网络开发客户端应用程序

面向 Go 开发人员的链代码深入研究,第 3 部分 为基于 Hyperledger Fabric v0.6 的区块链网络开发客户端应用程序深入剖析 Node.js 客户端应用程序的组成部分 Varun Ojha2017 年 8 月 30 日发布 系列内容:此内容是该系列 # 部分中的第 # 部分: 面向 Go 开发人员的链代码深入研究,第 3 部分http://www.ibm.com/developerworks/cn/library/?series_title_by=**auto**敬请期待该系列的后续内容。此内容是该系列的一部分:面向 Go 开发人员的链代码深入研究,第 3 部分敬请期待该系列的后续内容。 获取最佳免费工具、培训和社区资源的每月集萃,帮助您开始使用区块链。最新一期 | 订...阅读全文

博文 2017-11-29 06:28:32 www.ibm.com

2020 区块链 golang 版本(8)

封面 查询余额(UTXO) 上面代码实现 Alice 通过挖矿得到她的第一笔交易 12.5 比特币奖励,现在我们需要实现可以查询 Alice 余额(UTXO)的方法。 图 我们可以通过追踪 John 交易来计算其 UTXO,如图 蓝色表示交易输入 黄色和绿色表示交易输出,其中绿色表示没有被话费的输出 那么我们在统计某一个用户UTXO 不仅要看和他相关输出,还要看和他相关输入,以便确认某一笔输出是否被使用,如果被使用我们就可以跳过该输入对应输出,这里大家可能对输入和输出还不算理解,这里输入和输出可以理解对象,输入就是用户花费的,而输出用户得到比特币。这个方法我们写到区块链(BlockChain)下命名为 FindUTXOs。我先把代码抛出来 func (bc *BlockChain) Find...阅读全文

博文 2020-04-30 03:32:46 zidea

区块链之链码升级

进入区块链peer节点的证书文件夹,在客户端下,路径为:```crypto-config/peerOrganizations/org2.cloudchain-dev.querycap.com/users/Admin\@org2.cloudchain-dev.querycap.com/)```peer执行脚本:```#!/bin/bashPATH=`pwd`/../bin:$PATHexport FABRIC_CFG_PATH=`pwd`export CORE_PEER_TLS_ENABLED=trueexport CORE_PEER_TLS_CERT_FILE=./tls/client.crtexport CORE_PEER_TLS_KEY_FILE=./tls/client.keyexpo...阅读全文

【golang】小技巧-利用io.copy写数据进文件

io.copy是按默认的缓冲区32k循环操作的,不会将内容一次性全写入内存中,这样就能解决大文件的问题。 resp, err := http.Get(url) if err != nil { fmt.Fprint(os.Stderr, "get url error", err) } defer resp.Body.Close() out, err := os.Create("/tmp/icon.png") wt := bufio.NewWriter(out) defer out.Close() // 按一定大小循环写入数据,避免大文件造成内存溢出 n, err := io.Copy(wt, resp.Body) fmt.Println("write", n) if err != nil { ...阅读全文

博文 2020-05-14 11:33:00 dongzaidong

用Go构建区块链——1.基本原型

本篇开始进入"用Go构建区块链"系列,主要对原文进行翻译。本篇对应原文如下: Building Blockchain in Go. Part 1: Basic Prototype 话不多说,开始进入正文。 1、介绍 区块链是21世纪最具革命性的技术之一,它仍在逐步发展中,并且其潜力还未被充分认识。本质上,区块链只是一个分布式数据库而已。但是,它的独特之处在于它不是一个私有的数据库,而是一个公共的,即每个使用它的人都拥有它的全部或部分副本。只有得到其他数据库管理员的同意,新的记录才能被加入。正因为由此区块链,才使得加密货币和智能合约成为可能。 在本系列文章中,我们将构建一个基于简单区块链实现的简单加密货币。 2、区块 我们从"区块链"的"区块"部分开始。在区块链中,它存储有价值的信息。例如,比...阅读全文

博文 2019-03-01 14:34:45 我是李小胖

Hyperledger Fabric 命令详解之“ generate ”

sudo ./byfn.sh -m generate a@ubuntu:~/hyfa/fabric-samples/first-network$ sudo ./byfn.sh -m generate Generating certs and genesis block for with channel 'mychannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds Continue? [Y/n] y proceeding ... /home/a/hyfa/fabric-samples/first-network/../bin/cryptogen > 利用cryptogen tool 生成证书 Generate ...阅读全文

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

linux.i686 安装 go1.4失败

下载的 go1.4.linux-386.tar.gz 下载在 ~/ 目录下 ``` cd ./go/src ./all.bash ``` 报错如下 ``` # Building C bootstrap tool. cmd/dist # Building compilers and Go bootstrap tool for host, linux/386. lib9 /home/liu/go1.4/src/lib9/fmt/fltfmt.c: In function '__efgfmt': /home/liu/go1.4/src/lib9/fmt/fltfmt.c:437:5: error: this statement may fall through [-...阅读全文

兄弟连区块链教程分享区块链POW证明代码实现demo

兄弟连区块链教程分享区块链POW证明代码实现demo,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。这里强调一下区块链的协议分层应用层合约层激励机制共识层网络层数据层上 一篇主要实现了区块链的 数据层,数据层主要使用的技术就是对数据的校验,求hash。这里介绍工作量证明POW, POW是属于共识机制的内容。PoW机制中根据矿工的工作量来执行货币的分配和记账权的确定。算力竞争的胜者将获得相应区块记账权和比特币奖励。因此,矿机芯片的算力越高,挖矿的时间更长,就可以获得更多的数字货币。优点:算法简单,容易实现;节点间无需交换额外的信息即可达成共识;破坏系...阅读全文

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

golang-错误处理, defer 的使用

package main import ( "bufio" "errors" "fmt" "os" ) /** 被 defer 修饰的代码确保在函数结束时发生 参数在 defer 语句时计算 defer 列表为后进先出 一般使用场景 Open/Close Lock/Unlock PrintHeader/PrintFooter */ func tryDefer() { // defer 关键字表示,在这个函数结束之前执行 // defer 不管是 return 还是 panic 抛异常,都会执行 // 同时出现 defer 关键字,那么先输出的是2而不是1,因为有个入栈的操作,在最上面的先执行 defer fmt.Println(1) defer fmt.Println(2) fmt.Prin...阅读全文

博文 2019-12-17 22:32:43 爱吃豆包

golang-区块链学习02工作量证明

前言 在前一篇“golang-区块链学习01”的基础上,增加我们区块链的工作量证明。 知识点 1、区块链ProofOfWork(工作量证明)概念,因为所有人都想生成区块来获取奖励,为了公平起见,我们规定要想成功生成一个区块必须完成指定难度的任务才行。也就是谁先完成指定难度的任务就将成功生成一个区块。先预留个彩蛋,结合实例的工作量证明将在文末总结。 golang实现简单的工作量证明 1、定义一个工作量难度。比如要求生产的区块的hash值前面五位必须为0。即hash类似:00000xxxxxxxxxxx的样式。 2、在Block的结构中增加一个Nonce变量,通过不断修改Nonce的值,不断计算整个区的hash值,直到满足上面的要求即可。 3、代码实例 创建一个proofofwork.go文件。...阅读全文

博文 2018-08-08 23:34:45 embedsky

BBFT共识算法深度解析丨Bystack是如何实现单条侧链 20000+TPS的

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

博文 2019-06-06 15:32:48 比原链Bytom

用 golang 实现区块链系列三 | 持久化与命令行

简介 到现在为止,我们已经搞了一个带有工作量证明的区块链,它使得挖矿成为可能。我们的实现已经离一个功能全面的区块链更近了一步,但仍然缺少一些重要的功能。今天我们会开始吧区块链存在一个数据库里,然后做一个简单的命令行接口投操作区块链。本质上,区块链是一个分布式的数据库。我们先省略“分布式”这个部分,集中处理“数据库”这部分。 数据库选择 当前,我们的视线中没有数据库;作为替代,我们每次运行程序会创建区块并存在内存里。我们不能重复使用区块链,我们不能和其他人共享数据,所以我们需要把它存在硬盘上。 我们需要哪种数据库?事实上,一个都不需要。在 比特币论文的原文 中,从来没说过要用哪种依存数据库,所以开发者高兴用哪个就用哪个。 比特币核心,就那个中本聪最初发布的版本,也是目前比特币实现的参考版本,使...阅读全文

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

兄弟连区块链入门教程以太坊源码分析hashimoto源码分析(二)

兄弟连区块链入门教程以太坊源码分析hashimoto源码分析(二)。“超级计算机是将计算受限问题转化为I / O约束问题的一种设备。”Ken BatcherInstead, an algorithm will have little room to be sped up by new hardware if it acts in a way that commodity computer systems are already optimized for.相反,如果一种算法以商品计算机系统已经优化的方式运行,那么算法将没有多少空间可以被新硬件加速。Since I/O bounds are what decades ofcomputing research has gone towards s...阅读全文

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

兄弟连区块链培训分享Go语言并发超时处理

2018年第一季度,区块链相关人才的招聘需求已达到2017年同期的9.7倍,发布区块链相关岗位的公司数量同比增长4.6倍。 兄弟连教育Go全栈与区块链培训课程是由清华、微软和谷歌名师历时半年时间研发出的独一无二的体系化课程。golang并没有在语言层次上提供超时操作,但可以通过一些小技巧实现超时。原理:并发一个函数,等待1s后向timeout写入数据,在select中如果1s之内有数据向其他channel写入则会顺利执行,如果没有,这是timeout写入了数据,则我们知道超时了。package mainimport "fmt"import "time"func main() {ch := make(chan int, 1)timeout := make(chan bool, 1)// 并发执...阅读全文

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

Hyperledger Fabric学习笔记01-系统逻辑架构

本系列学习笔记以阅读《深度探索区块链:Hyperledger Fabric技术与应用》一书的笔记为蓝本,故默认Hyperledger Fabric 1.0,期间可能会追加最新版本的内容,到时会在里面注明。这是一个边看边写的系列,有兴趣的也可以先自行购买此书学习。 Hyperledger Fabric 1.0是一种通用的区块链技术,其设计目的是利用一些成熟的技术实现分布式账本技术(Distributed Ledger Techonlogy DLT)。 超级账本采用模块化架构设计,复用通用的功能模块和接口。 模块化的方法带来了可扩展性、灵活性等优势,会减少模块修改、升级带来的影响,能很好地利用微服务实现区块链应用系统的开发和部署。 Hyperledger Fabric 1.0设计的几个特点: 特...阅读全文

博文 2019-03-21 01:34:41 蜜汁炒酸奶

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

随着区块链引发的“颠覆风暴”,大量区块链培训机构应运而生。但在鱼龙混杂的培训圈内,要想找到真正符合标准的课程体系与专属区块链领域的专业授课讲师简直是沧海一粟。兄弟连教育指出,是时候做出行动改变并颠覆传统培训机构运营思维,并提醒大众用户,应理性选择区块链培训机构。如果某个函数的入参是interface{},有下面几种方式可以获取入参的方法:1 fmt:import "fmt"func main() { v := "hello world" fmt.Println(typeof(v))}func typeof(v interface{}) string { return fmt.Sprintf("%T", v)}2 反射:import ( "reflect" "fmt")func main() ...阅读全文

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

【转】解决golang开发socket服务时粘包半包bug

编程过程中遇到了粘包问题,看到这篇很详尽的就mark下来了,虽然看代码很简单,也没能解决我的粘包问题,但是对于自己了解粘包还是有用的么,是吧。 在使用golang做socket服务时,我想大多数人都会碰见粘包的问题。 以前用python做socket服务时就想写一篇关于tcp粘包的问题,后来因为单纯的tcp服务器开发功能实在烦杂,索性直接用http tornado进行通信了。 下面的资料有些是来自我个人的印象笔记,相关的参考引用链接早就找不到了。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。 http://xiaorui.cc/?p=2888 什么是半包 ? 接受方没有接受到完整的包,只接受了一部分。 由于发送方看到内容太大切分数据包进行发送,这样切包能提高...阅读全文

博文 2017-10-31 07:04:51 大雁儿

区块链编程指南:常用的五大区块链编程语言

区块链代表着未来的发展方向。当然,确定未来将围绕这一新兴技术构建并不是一个牵强附会的附件。区块链最初是一种开放的技术,没有访问限制,但随后的开发,逐渐出现了新的类型,每个区块链都有自己的一组特定用例。开放/非访问区块链的特征包括开放性,分散性和缓慢性,而私有/可访问区块链采用部分或完全封闭的集中管理方法。通过今天的文章,我们将探索我们需要学习哪些知识来构建基于区块链技术的应用程序。应该使用哪种编程语言进行高效编程? 五大常用区块链编程语言 1. C++下面让我们从清单当中最古老、也最受推崇的语言——编程语言界的常青树C++开始。相信大家都很清楚,C++语言属于C语言的扩展方案。在C++中,我们可以创建数据、函数与对象包,并在其它程序中轻松对其进行调用与复用,这将大大缩短编码的时间周期。然而,...阅读全文

博文 2019-04-01 18:34:40 羽珩发布

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

wif倒推出私钥参考资料https://en.bitcoin.it/wiki/Private_keyhttps://en.bitcoin.it/wiki/Wallet_import_formathttp://gobittest.appspot.com/PrivateKey本文链接: https://dreamerjonson.com/2018/12/09/golang-40-blockchain-verifyprivatekeywif/版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处...阅读全文

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

剥开比原看代码07:比原节点收到“请求区块数据”的信息后如何应答?

作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 在上一篇,我们知道了比原是如何把“请求区块数据”的信息BlockRequestMessage发送给peer节点的,那么本文研究的重点就是,当peer节点收到了这个信息,它将如何应答? 那么这个问题如果细分的话,也可以分为三个小问题: 比原节点是如何收到对方发过来的信息的? 收到BlockRequestMessage后,将会给对方发送什么样的信息? 这个信息是如何发送出去的? 我们先从第一个小问题开始。 比原节点是如何接收对方发过来的信息的? 如果我们在代码中搜索BlockRequestMess...阅读全文

博文 2018-07-23 15:34:51 比原链Bytom

兄弟连区块链教程以太坊源码分析downloader-peer源码分析

兄弟连区块链教程以太坊源码分析downloader-peer源码分析,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。peer模块包含了downloader使用的peer节点,封装了吞吐量,是否空闲,并记录了之前失败的信息。 peer // peerConnection represents an active peer from which hashes and blocks are retrieved.type peerConnection struct { id string // Unique identifier of the peer headerIdle int32...阅读全文

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

golang学习笔记

go中的channel channel是类型相关的1.声明var channame chan chantype2.定义ch := make(chan int)3.基本操作ch <- value value := <- ch当没有设置缓冲区时,channel的读写都会阻塞4.缓冲机制ch := make(chan int, 1024)当设置缓冲区大小时,在缓冲区填满前不会阻塞5.超时处理可以利用select来实现channel的超时机制 timeout := make(chan bool, 1) go func() { time.sleep(1e9) timeout <- true }() select{ case <-ch: case <- timeout: } 这样无论ch是否接收到数据,...阅读全文

博文 2017-07-09 15:07:04 C_A_dogN

智能电网中基于分布式管理请求相应程序的区块链的应用

Title:智能电网中基于分布式管理请求相应程序的区块链的应用 Abstract:在本文中,我们研究了使用分布式区块链机制,以适应能源生产商的能源需求为形式,向所有涉及弹性市场的利益相关者(主要是配电系统运营商,零售商,集成商等),提供透明、安全、可靠、和及时的能源灵活性。在我们的解决方案中, 一个防篡改的基于区块链的分布式分类账,存储从物联网设备收集的能源消耗信息,同时自我执行的智能合约以编程的方式在每个生产商的水平上定义预期的能源灵活性、相关的奖励或惩罚,以及在电网水平上平衡能源需求和能源生产的规则。基于验证的共识将被用于需求响应程序的验证,并且为灵活性供应商激活适当的财务结算。该方法通过在以太坊平台上实现的原型进行验证,该原型使用了文献数据集中多个建筑物的能耗和生产记录。结果表明,基于...阅读全文

博文 2019-02-16 14:28:34 1500250103

Gitee + 区块链:基于 IPFS 的去中心化代码托管环境探索

Gitee 团队一直在探索去中心化的存储技术,甚至是建立于区块链上的完全去中心化的存储,以为开发者提供更安全、稳定的代码托管环境,为此我们一直在跟踪和研究两大核心技术问题,一是去中心化的底层存储技术,二是适用的高效共识算法。一、去中心化的底层存储协议在底层存储协议方面, Gitee 团队深入研究了 IPFS 协议,同时在探索 IPFS 协议作为底层存储技术在实现去中心化代码托管的落地可行性和优缺点。IPFS(InterPlanetary File System – 星际文件系统)是一个基于内容哈希寻址的点对点的超媒体分发协议,2014 年开始由 Protocol labs在开源社区下推动发展,目前已经提供了基于 Golang 的开源实现(详情请访问:https://github.com/ip...阅读全文

博文 2019-10-31 17:32:53 aside section._1OhGeD

govendor 包管理

{ "checksumSHA1": "SZyo8pcL9sjxyP/FwWzO7Zht54w=", "path": "github.com/boj/redistore", "revision": "4562487a4bee9a7c272b72bfaeda4917d0a47ab9", "revisionTime": "2017-04-19T03:05:11Z" } 从别的go工程copy来的依赖包信息,放到vendor.json里面 1.怎么才能快速的更新到最新版本?revision指点的是某个版本,假设有了最新版本,那还能下载最新版本吗? revision revisionTime会影响下载最新版本吗? 2.copy进来怎么下载,看go...阅读全文

区块链入门教程之以太坊源码分析交易数据分析

兄弟连区块链教程以太坊源码分析交易数据分析。 交易的数据结构 交易的数据结构定义在core.types.transaction.go中,结构如下: type Transaction struct { data txdata // caches hash atomic.Value size atomic.Value from atomic.Value } 交易的结构体中只有一个data字段,是txdata类型的。其他的hash,size,from都是缓存。txdata结构体定义如下: type txdata struct { AccountNonce uint64 `json:"nonce" gencodec:"required"` Price *big.Int `json:"gasPrice...阅读全文

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

golang[42]-区块链-go实战比特币默克尔树

go实战比特币默克尔树参考资料eth wiki:patricia-tree[csdn 默克尔树解释]https://blog.csdn.net/wo541075754/article/details/54632929https://github.com/ZtesoftCS/go-ethereum-code-analysis/blob/master/trie源码分析.md本文链接: https://dreamerjonson.com/2018/12/11/golang-42-blockchain-merkletree2/版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处...阅读全文

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

比原链CTO James | Go语言成为区块链主流开发语言的四点理由

11月24日,比原链CTO James参加了Go中国举办的Gopher Meetup杭州站活动,与来自阿里、网易的技术专家带来Kubernetes、区块链、日志采集、云原生等话题的分享。James向大家介绍了Go语言特性在区块链中的应用还分析了Go语言成为区块链主流开发语言的原因。 比原链的系统架构 在区块链系统中内核层是最核心的,他承接了区块验证、交易验证、节点维护、打包挖矿等重多职责。通信层掌管了区块链系统的网络服务,区块链的网络更像P2P的网络形式,他呈网状扩散,负责区块同步、交易同步、节点发现等重要的功能。钱包层是直接和用户发生交互的一层,他的职责是资产管理、私钥管理,并与内核层通信验证区块交易。 以Bytom为例,他的内核层分为了五个的模块。我们举例描述几个主要的模块。 孤儿块管理...阅读全文

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

区块链教程Fabric1.0源代码分析configtx#genesis,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之 configtx(配置交易) #genesis(系统通道创世区块) 1、genesis概述 genesis,即创世区块,此处特指系统通道的创世区块。相关代码在common/genesis/genesis.go,即Factory接口及实现。 2、Factory接口定义 type Factory interface { Block(channelID string) (*cb.Block, error) } /...阅读全文

博文 2018-10-30 16:35:57 兄弟连区块链

go实现区块链[2]-整合默克尔树+POW

添加merkleRootmerkleTree.go1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162package mainimport "crypto/sha256"//默克尔树节点type MerkleTree struct{ RootNode *MerkleNode}//默克尔根节点type MerkleNode struct{ Left *MerkleNode Right *MerkleNode Data []byte}//生成默克尔树中的节点,如果是叶子节点,则Left,right为nil ,如果为非叶子...阅读全文

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

【TokenGazer深度研究】Aergo:企业级公链落地尚未明朗,项目信息披露不全建议跟进观察

本期项目:Aergo1. AERGO试图融合公链和私链去更好的满足企业级用户的需求。团队技术人员大多有区块链项目开发经验,但目前负责商业拓展、市场运营的人员较少。2. 项目的“背书”公司Blocko有4年的区块链行业经验,其产品Coinstack已经有商业应用。AERGO的核心技术基于Coinstack,预计Blocko公司会为AERGO项目提供大量资源支持。3. 项目粉丝热度较高。4. AERGO代币作为平台内的应用型代币,其需求将随着平台的使用规模而增加,因此代币的长期投资价值需要考虑未来生态建设情况。5. 项目尚未发布官方Github主页或MVP(最简化可实行产品)。白皮书的部分技术细节需要团队公布更多资料协助进一步理解。行业背景现实世界中的应用开发需要考虑计算、存储、外部数据、变现、...阅读全文

博文 2018-08-14 15:35:20 TokenGazer

以太坊源码分析:共识(1)矿工

前言 矿工在PoW中负责了产生区块的工作,把一大堆交易交给它,它生成一个证明自己做了很多工作的区块,然后将这个区块加入到本地区块链并且广播给其他节点。 接下来我们将从以下角度介绍矿工: 角色。矿工不是一个人,而是一类人,可以把这一类人分成若干角色。 通过了解一个区块产生的主要流程,掌握矿工的工作流。 通过了解矿工的主要函数介绍,掌握矿工的主要挖矿机制。 介绍矿工由哪些部分组成,会和哪些其他模块进行交互,这些部分是如何协作产生区块的。 角色 有3种角色:miner、worker、agent。我们分别使用矿长、副矿长、矿工进行类比。 miner:是矿长,负责管理整个矿场的运作,比如:启动、停止挖矿,处理外部请求,设置挖矿获得的奖励的钱包地址等等。 worker:副矿长,负责具体挖矿工作的安排,把...阅读全文

博文 2018-11-17 12:34:38 大彬