区块链公链代码

区块链公链

 type Block struct {
	Index  int64
	TimeStamp int64
	Data  []byte
	PrevBlockHash []byte
	Hash []byte
}

新的block

func  NewBlock(index int64,data ,prevBlockHash []byte) *Block  {
	block :=&Block{index,time.Now().Unix(),data,prevBlockHash,[]byte{}}
	block.setHash() //设置当前区块Hash
	return  block
}

hash计算

func (b *Block)setHash()  {
	timestamp :=[]byte(strconv.FormatInt(b.TimeStamp,10))
	index := []byte(strconv.FormatInt(b.Index,10))
	headers :=bytes.Join([][]byte{timestamp,index,b.PrevBlockHash},[]byte{})
	hash:=sha256.Sum256(headers)
	b.Hash =hash[:]  //保存Hash结果在当前块的Hash中
}

创世纪块

func NewGenesisBlock() *Block  {
	return  NewBlock(0,[]byte("first block"),[]byte{})
}

定义区块链

type Blockchain struct {
  blocks []*Block
}

添加区块

func  NewBlockchain()*Blockchain  {
	return &Blockchain{[]*Block{NewGenesisBlock()}}
}

创建新区块

func (bc *Blockchain)AddBlock(data string)  {
	prevBlock :=bc.blocks[len(bc.blocks)-1]
	newBlock :=NewBlock(prevBlock.Index+1,[]byte(data),prevBlock.Hash)
	bc.blocks =append(bc.blocks,newBlock)
}

主函数

func main(){
	bc :=NewBlockchain()
	bc.AddBlock("Joy send 1 BTC to Jay")
	bc.AddBlock("Jakc sent 2 BTC to Jay")

	for  _,block := range bc.blocks{
		fmt.Printf("Index :%d\n" ,block.Index)
		fmt.Printf("TimeStamp: %d\n",block.TimeStamp)
		fmt.Printf("Data: %s\n",block.Data)
		fmt.Printf("PrevHash: %x\n",block.PrevBlockHash)
		fmt.Printf("Hash: %x\n",block.Hash)
		fmt.Println("_____________________________")
	}

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的区块链及侧的 Python 代码示例,包含基本的区块链结构和离/侧实现: ```python import hashlib import json from time import time class Blockchain: def __init__(self): self.chain = [] self.current_transactions = [] # 创世块 self.new_block(previous_hash=1, proof=100) def new_block(self, proof, previous_hash=None): """ 生成新块 """ block = { 'index': len(self.chain) + 1, 'timestamp': time(), 'transactions': self.current_transactions, 'proof': proof, 'previous_hash': previous_hash or self.hash(self.chain[-1]), } self.current_transactions = [] self.chain.append(block) return block def new_transaction(self, sender, recipient, amount): """ 生成新交易信息,信息将加入到下一个待挖的块中 """ self.current_transactions.append({ 'sender': sender, 'recipient': recipient, 'amount': amount, }) return self.last_block['index'] + 1 @staticmethod def hash(block): """ 生成块的 SHA-256 值 """ block_string = json.dumps(block, sort_keys=True).encode() return hashlib.sha256(block_string).hexdigest() @property def last_block(self): """ 返回上最后一个块 """ return self.chain[-1] class OffChain: def __init__(self): self.transactions = [] def add_transaction(self, sender, recipient, amount): """ 添加新交易到离区块 """ self.transactions.append({ 'sender': sender, 'recipient': recipient, 'amount': amount, }) def get_transactions(self): """ 返回所有离交易 """ return self.transactions class SideChain: def __init__(self): self.blocks = [] def add_block(self, block): """ 添加新块到侧 """ self.blocks.append(block) def get_blocks(self): """ 返回所有侧块 """ return self.blocks ``` 在这个示例中,`Blockchain` 类实现了基本的区块链结构,包括生成新块、添加新交易和计算块哈希等功能。`OffChain` 类实现了离功能,允许添加新交易到离区块并获取所有离交易。`SideChain` 类实现了侧功能,允许添加新块到侧并获取所有侧块。 请注意,这只是一个简单的示例,实际应用中可能需要更复杂的数据结构和算法来处理更大规模的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值