区块链项目 - 1 创建一条公链

这篇具有很好参考价值的文章主要介绍了区块链项目 - 1 创建一条公链。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.创建一条公链

本部分内容我们会使用Go语言去做代码实现,我们先在Go文件夹下的src目录下创建一个文件夹publicChain,用于存放所有代码文件

1.1 区块结构

通常意义上区块内容主要包含五个部分:区块高度、前一个区块的哈希、交易数据、时间戳以及本区块的哈希。使用Go语言中的Struct即可定义一个区块

/Users/go/src/publicChain/part1-Basic-Prototype/BLC/Block.go文章来源地址https://www.toymoban.com/news/detail-450038.html

package BLC

import (
	"bytes"
	"crypto/sha256"
	"fmt"
	"strconv"
	"time"
)

//the structure of a block

//five elements of a block

type Block struct {
	//1.block height
	Height int64
	//2.the last block's hash
	PreBlockHash []byte
	//3.transaction data
	Data []byte
	//4.timestamp
	Timestamp int64
	//5.block's hash
	Hash []byte
}

注意:这里区块哈希值和交易数据类型都使用了[]byte类型,这是因为[]byte更加灵活和易操作

1.2 生成新区块

我们都知道,在区块链中新区块的生成依赖于上一个区块的信息,我们现在来创建一个函数专门用来生成新的区块

/Users/go/src/publicChain/part1-Basic-Prototype/BLC/Block.go

//a function to crate a new block

//use the "Block" defined above to crate a new block

func Newblock(height int64, preBlockHash []byte, data string) *Block {

	//1.crate a new block

	block := &Block{height, preBlockHash, []byte(data), time.Now().Unix(), nil}

	//2.set Hash
	
	block.SetHash()

	return block
}

在创建第一个区块的时候,需要我们提供区块的五要素,现在我们将提供前三个作为新函数的参数,时间戳直接调用系统即可,而本区块的哈希是由其它信息通过加密算法产生

我们先定义了一个block变量,实际上是上面Block的引用(直接传数据量太大了),这里的本区块哈希值我们暂且填充为nil

//1.crate a new block

block := &Block{height, preBlockHash, []byte(data), time.Now().Unix(), nil}

这里我们用上面这个变量调用了一个新的函数专门用来生成本区块的哈希值

//2.set Hash
	
block.SetHash()

如下函数把int64类型的数据转化为了[]byte,并将其连起来用于生成哈希值

/Users/go/src/publicChain/part1-Basic-Prototype/BLC/Block.go

// a method to set the hash of the current block
// the hash of the current block is related to the rest data of current block

func (block *Block) SetHash() {
	//1.Convert int64 to byte slice

	heightBytes := IntToHex(block.Height)

	//2.Convert int64 to byte slice

	timeString := strconv.FormatInt(block.Timestamp, 2)
	timeBytes := []byte(timeString)

	//3.concatenate all properties

	blockBytes := bytes.Join([][]byte{heightBytes, bloc

到了这里,关于区块链项目 - 1 创建一条公链的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Genesis公链加速区块链行业发展

    Genesis公链加速区块链行业发展

    区块链提供了分布式、去中心化、透明、可溯源和不可篡改的交易记录体系结构。与传统数据库相比,区块链技术有较高的交易准确性和安全系数,以及不需要第三方中介即可进行更加高效的金融活动。 当然尽管区块链行业发展如火如荼,但仍面临很多问题亟待解决。 信息

    2024年02月02日
    浏览(13)
  • GENESIS公链将打破不同区块链孤岛效应

    GENESIS公链将打破不同区块链孤岛效应

    如今经济发展迅猛,用户交易、数字货币需求及原生资产的第三方跨链需求日益增长,交易安全、用户隐私等问题也备受瞩目。 自从Web2.0时代人们可以交易信息和价值以来,伴随使用第三方带来滥用用户信息和隐私等他问题,除了暂时便利还有高昂的中介成本。 而现在迎来

    2024年02月16日
    浏览(17)
  • 区块链开发团队,公链开发才是主战场

    区块链开发团队,公链开发才是主战场

    在区块链技术开发公司不断完善的当下,很多企业都想加入进来。有远见的人永远能嗅到区块链未来市场的发展趋向,以区块链技术开发实体企业应用,在空白的市场里拥有无限开发潜力!而创业者要做的就是快人一步,才能夺得市场先机!我们团队作为一家专业的区块链公

    2024年02月16日
    浏览(7)
  • 区块链模块化的大胆尝试,解读公链Celestia

    区块链模块化的大胆尝试,解读公链Celestia

    作为以链游为主的社区,暴躁兔也会时常关注加密行业的其他赛道和方向。对于目前市场而言,公链的机会与红利仍然存在,且相对而言,技术创新较多,同时资本也比较喜欢这样的赛道。今天为大家讲解的是Cosmos生态的项目Celestia,也欢迎大家持续关注我们。 Celestia简介

    2024年02月08日
    浏览(14)
  • 你真的了解区块链吗?公链侧链,私有链联盟链概述

    你真的了解区块链吗?公链侧链,私有链联盟链概述

    导读:目前,区块链主要分为三类——公有链、私有链和联盟链。 **公有链:**对所有人开放,任何人都可以参与。 **联盟链:**对特定的组织团体开放。 **私有链:**对单独的个人或实体开放。 定义 公有链是指全世界任何人都可读取的、任何人都能发送交易且交易能获得有

    2024年04月22日
    浏览(10)
  • J9数字论:如何理解区块链中的公链,私链,侧链,联盟链

    J9数字论:如何理解区块链中的公链,私链,侧链,联盟链

    区块链简而言之,就是一个分散式的记账本,有着点对点交易查询,公正,透明,可追溯,不可篡改,去中心化的特点。 区块链在大类上被分为公共区块链(公链),联盟区块链和私有区块链,TVL和用户量最大的公链当属以太坊。而除以太坊以外,其他公链在自身定位分类或

    2024年02月12日
    浏览(15)
  • 区块链合约安全系列(三):如何认识及预防公链合约中的自毁攻击

    区块链合约安全系列(三):如何认识及预防公链合约中的自毁攻击

    id:BSN_2021 公众号:BSN 研习社 作者:红枣科技张雪良 背景:由于公链环境下所有的信息都是共享的,智能合约相当于是完全透明化,任何人都可以调用,外加一些利益的驱动,导致引发了很多hacker的攻击。其中self destruct攻击也是常见的攻击方式之一。 目标:将目标合约瘫痪

    2024年02月01日
    浏览(12)
  • 【项目部署篇】-从0搭建一套ERP系统(前后端)

    【项目部署篇】-从0搭建一套ERP系统(前后端)

    项目背景介绍: 今天一起部署一套项目,是属于java编写的前后端的项目,ERP系统 项目准备前提: 准备好宝塔环境 宝塔上安装了LNMP的基础环境 项目部署: 1.下载项目源代码到本地 找我领取,拿到之后,在本地找个地方,解压保存 解压后的目录是这样的 2.安装基础环境 2.

    2024年02月12日
    浏览(8)
  • 【一个大坑,持续更新】番外之区块链之创建泰安链账户、泰安链项目和生成公钥私钥

    【一个大坑,持续更新】番外之区块链之创建泰安链账户、泰安链项目和生成公钥私钥

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 最开始了解BSN是因为BSN的开发者大赛,如果你想尝试一下开发或学习区块链的相关知识,我认为是一个很好的入门平台。 来看一下它的简介: 区块链服务网

    2024年02月03日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包