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

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

golang使用json格式实现增删查改

需求和思路 在一般的小项目或者一个小软件,例如客户端之类的小程序中,可能会需要数据的持久化.但是使用一般的数据库(Mysql)之类的不合适.使用sqlite3这种嵌入式的是个较好的方法,但是Go语言中sqlite3的库是C语言的,Cgo不支持跨平台编译.正是由于这种需求,才想到使用json格式将数据直接保存在文件中.具体的思路是怎么样呢? 在Go语言中如果要将数据转化成json格式的话,有两种格式 struct 和 map. 如果同时需要增删查改功能的话,将map作为中间格式是比较合适的.接下来我们就来实现它. 查询操作 这种操作的实现比较简单,直接将文件中的数据读取出来,使用json库反序列化就可以了. 代码如下 : type Product struct { Name string `j...阅读全文

博文 2020-05-21 11:32:45 xingyys

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

区块结构描述

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 阿留神

golang实现简化版桶算法

/** * 简化版桶算法 * 通过一维数组保存对应数字在一维数组中出现的个数,然后遍历一维数组达到排序的效果 * 这里一位数组是排序列表的范围,必须10以内的数字列表排序, 则一维数组大小为11 (N+1) * * 涉及知识点: * @随机数功能 * @时间处理和格式化 */ package main import ( "fmt" "math/rand" "time" ) func main() { var scoreList [11]int score := [5]int{5, 3, 5, 2, 8} for _, v := range score { scoreList[v]++ } fmt.Println(scoreList) var result []int // fmt.Print...阅读全文

博文 2020-05-25 03:32:49 全栈运维

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

维基链WICC | 项目进展周报第27期(3.18~3.24)

技术&产品周报应用建设维基时代APP v1.2.0发布:①维基时代国际版上线。(100%)②维基时代钱包更换新节点。(100%)③维基时代:任意第三方应用可调起维基时代统一签名接口,进一步提升开发者友好性。④维基时代“发现”版块上线。⑤用户行为数据统计计划上线。T2D2建设CTO陈晓东在CSDN平台直播分享《区块链技术架构与应用架构》,共119人参与直播答疑环节。完成Baas平台智能合约链上数据查询接口。 (100%)为海外开发者团队提供智能合约开发技术支持。(80%)为提升开发者开发效率的智能合约IDE工具 前端开发中。(50%)WRC20标准的智能合约demo持续优化。 (50%)区块链浏览器原型设计。(50%)公链建设解决golang钱包库投票接口相关问题。(100%)升级签名算法以提...阅读全文

博文 2019-03-26 13:34:41 维基区块链

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

### 1.3、Endorser Service(背书服务) #### 1.3.1、Endorser Service客户端 ```go type EndorserClient interface { ProcessProposal(ctx context.Context, in *SignedProposal, opts ...grpc.CallOption) (*ProposalResponse, error) } type endorserClient struct { cc *grpc.ClientConn } func NewEndorserClient(cc *grpc.ClientConn) EndorserClient { return &endorserClient{cc} ...阅读全文

博文 2018-11-08 15:06:11 ITXDL

【区块链】Tendermint——本机单节点部署

Tendermint 由于工作原因2年前开始接触Hyperledger Fabric,其社区还是很活跃的,已经从当年的v0.7发展到如今v2.0了。但不得不说Fabric的体量还是挺大的,对于二次开发来说有一定难度。所以最近开始转向Tendermint,因为Tendermint更简单、易于理解、性能更高(当然这是Tendermint自己标榜的),不过事实上相对于Fabric确实更易于理解,更方便开发区块链的应用系统。 摘要 Tendermint由两个主要部分组成,一个负责共识,一个负责应用程序接口,共识引擎称作Tendermint Core,应用程序接口称作ABCI(Application BlockChain Interface),利用ABCI可以开发自己业务逻辑。而Tendermint ...阅读全文

博文 2020-04-13 09:32:41 夏洛的克

【区块链】Tendermint——本机单节点部署

Tendermint 由于工作原因2年前开始接触Hyperledger Fabric,其社区还是很活跃的,已经从当年的v0.7发展到如今v2.0了。但不得不说Fabric的体量还是挺大的,对于二次开发来说有一定难度。所以最近开始转向Tendermint,因为Tendermint更简单、易于理解、性能更高(当然这是Tendermint自己标榜的),不过事实上相对于Fabric确实更易于理解,更方便开发区块链的应用系统。 摘要 Tendermint由两个主要部分组成,一个负责共识,一个负责应用程序接口,共识引擎称作Tendermint Core,应用程序接口称作ABCI(Application BlockChain Interface),利用ABCI可以开发自己业务逻辑。而Tendermint ...阅读全文

博文 2020-01-29 18:32:38 夏洛克

区块链编程完全指南:平台、语言与结论

链客,专为开发者而生,有问必答!此文章来自[链客区块链技术问答社区](https://www.liankexing.com),未经允许拒绝转载。 区块链编程完全指南:平台、语言与结论区块链,代表着未来的发展方向。是的,在文章开头,我们首先给出这样的结论。当然,认定未来将围绕这一新兴技术而延拓绝不是什么牵强附会。区块链最初是一种公开且不存在准入限制的技术,但随着后续发展又有新的类型逐步出现,而且每种区块链都有着自己特定的用例集合。公开/无准入区块链的特征包括开放、去中心化以及速度缓慢,而私有/准入型区块链则采取部分或者完全封闭的集中管理方式。 通过今天的文章,我们将共同探讨需要学习哪些知识才能立足区块链技术开发应用程序。当我本人(原文作者)刚刚开始学习区块链时,跟大家一样,我也觉得脑袋里塞满了...阅读全文

博文 2019-06-11 11:32:42 链客区块链技术问答社区

剥开比原看代码05:如何从比原节点拿到区块数据?

作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 在前一篇中,我们已经知道如何连上一个比原节点的p2p端口,并与对方完成身份验证。此时,双方结点已经建立起来了信任,并且连接也不会断开,下一步,两者就可以继续交换数据了。 那么,我首先想到的就是,如何才能让对方把它已有的区块数据全都发给我呢? 这其实可以分为三个问题: 我需要发给它什么样的数据? 它在内部由是如何应答的呢? 我拿到数据之后,应该怎么处理? 由于这一块的逻辑还是比较复杂的,所以在本篇我们先回答第一个问题: 我们要发送什么样的数据请求,才能让比原节点把它持有的区块数据发给我? 找到发...阅读全文

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

Golang之go module开发系列二--使用伪版本和GoCenter

Go模块已经为Go开发带来了秩序,但也存在一些潜在的混乱。管理模块尤其是伪版本可能很困难,尤其是在要进行一些最新更改的情况下。 JFrog GoCenter是一个免费的版本话棋模块仓库,现在它包含了一些重要的更新,可以帮助你坚持这个最佳实践。首先让我们看看伪版本是如何工作的,以及您可以期望从这些更改中得到什么。我们还提供了一些指导,让您在升级到1.13或更高版本时保持Go的构建工作。 Go 的模块版本化 对Go模块进行版本化是一个关键特性,它为开发人员提供了一种方法来确保他们的应用程序使用他们想要的依赖项。在对模块进行版本控制时,应用程序可以指定依赖的模块版本,因为我们知道模块版本与其他组件运行时兼容问题。 Go模块版本是通过在底层源存储库中标记其修订来分配的。go命令使用标准形式vX.Y....阅读全文

博文 2020-04-25 04:33:13 JFrog中国

2-1、Centos7上Docker的bug

Cannot ssh into a running pod/container – rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused “process_linux.go:110: decoding init error from pipe caused \“read parent: connection reset by peer\“” command terminated with exit code 126 #21590 一、Bug的影响 如果你使用的是 CentOS7,需要用到 kubectl exec ...阅读全文

博文 2020-05-11 19:32:47 xinput

浅析Facebook LibraBFT与比原链Bystack BBFT共识

如果说什么是区块链的灵魂,那一定是共识机制。 它是区块链的根基。无论公链或是联盟链,共识机制都从基础上限制了区块链的交易处理能力和扩展性。 2019年6月18日,Facebook 发布了自己 Libra 项目的白皮书,引发广泛关注。作为 Facebook 试图创造国际流通数字货币的重要项目,Libra 区块链采用的是 LibraBFT 共识机制,是一个为 Libra 设计的鲁棒的高效的状态复制系统。它基于一种新型的 BFT 共识算法,HotStuff。 就在 Facebook Libra 项目白皮书发布之前不久,5月17日,比原链发布了 BaaS 平台 Bystack。这是一个一主多侧链架构的商用区块链系统,主链采用 PoW 共识保证多样资产安全和去中心化,侧链提供可插拔的共识以满足不同业务...阅读全文

博文 2019-07-03 15:03:42 比原链Bytom

Golang之go module开发系列二--使用伪版本和GoCenter

Go模块已经为Go开发带来了秩序,但也存在一些潜在的混乱。管理模块尤其是伪版本可能很困难,尤其是在要进行一些最新更改的情况下。JFrog GoCenter是一个免费的版本话棋模块仓库,现在它包含了一些重要的更新,可以帮助你坚持这个最佳实践。首先让我们看看伪版本是如何工作的,以及您可以期望从这些更改中得到什么。我们还提供了一些指导,让您在升级到1.13或更高版本时保持Go的构建工作。Go 的模块版本化对Go模块进行版本化是一个关键特性,它为开发人员提供了一种方法来确保他们的应用程序使用他们想要的依赖项。在对模块进行版本控制时,应用程序可以指定依赖的模块版本,因为我们知道模块版本与其他组件运行时兼容问题。Go模块版本是通过在底层源存储库中标记其修订来分配的。go命令使用标准形式vX.Y.Z的语义...阅读全文

博文 2020-04-25 01:32:56 JFrog杰蛙科技

golang准备

Go 环境变量export GOROOT=$HOME/goexport PATH=$PATH:$GOROOT/binexport GOPATH=$GOROOT/src:$HOME/Applications/Go安装目录清单/bin:包含可执行文件,如:编译器,Go 工具/doc:包含示例程序,代码工具,本地文档等/lib:包含文档模版/misc:包含与支持 Go 编辑器有关的配置文件以及 cgo 的示例/os_arch:包含标准库的包的对象文件(.a)/src:包含源代码构建脚本和标准库的包的完整源代码(Go 是一门开源语言)/src/cmd:包含 Go 和 C 的编译器和命令行脚本文档查看go doc fmt其它工具go install 是安装 Go 包的工具。主要用于安装非标准库的包文件...阅读全文

博文 2020-04-01 11:33:02 剧终的开始

揭秘!containerd 镜像文件丢失问题,竟是镜像生成惹得祸

导语 作者李志宇,腾讯云后台开发工程师,日常负责集群节点和运行时相关的工作,熟悉 containerd、docker、runc 等运行时组件。近期在为某位客户提供技术支持过程中,遇到了 containerd 镜像丢失文件问题,经过一系列分析、推断、复现、排查,最终成功找到根因并给出解决方案。现将整个详细处理过程整理成文分享出来,希望能够为大家提供一个有价值的问题处理思路以及帮助大家更好地理解相关原理。 containerd 镜像丢失文件问题说明 近期有客户反映某些容器镜像出现了文件丢失的奇怪现象,经过模拟复现汇总出丢失情况如下: 某些特定的镜像会稳定丢失文件; “丢失”在某些发行版稳定复现,但在 ubuntu 上不会出现; v1.2 版本的 containerd 会文件丢失,而 v1.3 不...阅读全文

博文 2020-05-22 12:34:22 腾讯云原生