欢迎来到鼎富财经网,一家专业股票配资平台、期货开户、股票学习知识分享的正规财经网站

股票知识 区块链 白银价格 黄金价格 债劵基金 概念股 新股 配资平台 货币资讯 股票入门 K线入门 财经日历
鼎富财经:http://www.alfamp3.com/ 专业正规合法配资平台,放心可靠!
这是一个广告 这是一个广告 这是一个广告 这是一个广告 这是一个广告 这是一个广告 这是一个广告 这是一个广告 这是一个广告 这是一个广告
当前位置:财经网 > 股市新闻 > 区块链 > 正文

vpower:手把手教你搭建区块链(上)

发布日期:2020-02-05 17:16:14 来源:区块,函数,创建一个 阅读() 本文章共有 字,看完大约需要 分钟的时间

简介:本文内容由1050整理编辑,主要讲解的内容是:免责声明本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。小编记得关注哦来源币成......的相关信息,具体详情阅读下文。


免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。

小编:记得关注哦

来源:币成小助手

“学习区块链的最快方法就是自己亲手搭建一个”

如果您已经掌握了一些基础的python知识,那么跟着本文搭建区块链对您来说将不是一件难事儿。

在开始之前,有一些概念需要您先明确:

1. 区块链是一个不变的顺序记录链,称为块。它们可以包含事务,文件或任何您想要记录的数据。您只需记住,它们使用哈希值链接在一起。

2. 哈希函数就是一个简单的函数,它接受输入值,并根据该输入创建确定输入值的输出值。对于任何x输入值,只要运行哈希函数,您将始终收到相同的y输出值。这样,每个输入都有一个确定的输出。 哈希函数通常是不可逆的(单向),这意味着仅知道输出就无法弄清楚输入-除非尝试所有可能的输入(也称为暴力破解)。

这是哈希函数md5,可从任何输入数据创建一个32个字符的十六进制输出

掌握了区块,哈希等基本概念之后,您还需要为搭建区块链做一些环境准备工作: 请您确保您的电脑已安装 Python 3.6以上(以及pip)、Flask和Requests库。

pip install Flask==0.12.2 requests==2.18.4

Step 1 搭建区块链

打开你最喜欢的文本编辑器或IDE,推荐使用PyCharm;创建一个新文件,名为blockchain.py

创建一个Blockchain类,创建两个初始的空列表作为构造函数,一个用于存储我们的区块链,另一个用于存储交易。

class Blockchain(object):

def __init__(self):

self.chain =

self.current_transactions =

def new_block(self):

# Creates a new Block and adds it to the chain

pass

def new_transaction(self):

# Adds a new transaction to the list of transactions

pass

@staticmethod

def hash(block):

# Hashes a Block

pass

@property

def last_block(self):

# Returns the last Block in the chain

pass

这个区块链类负责管理链。,它存储事务,并具有一些用于将新块添加到链中的辅助方法。

”Block到底长什么样?“

每个Block都有一个索引index,一个时间戳timestamp(以Unix时间表示),一个事务列表,一个proof证明(稍后会有更多介绍)以及前一个块的哈希值。如下面代码所示:

block = {

'index ': 1,

'timestamp ': 1506057125.900785,

'transactions ': [

{

'sender ': "8527147fe1f5426f9dd545de4b27ee00",

'recipient ': "a77f5cdfa2934df3954a5c7c7da5df1f",

'amount ': 5,

}

],

'proof ': 324984774000,

'previous_hash ': "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"

}

此时链的概念应该很明显了: 每个新块本身都包含前一个块的哈希。这很关键,因为这使区块链具有不变性,即:如果攻击者破坏了链中较早的区块,则所有后续区块都将包含不正确的哈希。

”将交易添加到区块“

创建一个new_transaction方法,将交易添加到区块:

class Blockchain(object):

...

def new_transaction(self, sender, recipient, amount):

"""

Creates a new transaction to go into the next mined Block

:param sender:

:param recipient:

:param amount:

:return:

"""



self.current_transactions.append({

'sender ': sender,

'recipient ': recipient,

'amount ': amount,

})​

return self.last_block[ 'index '] 1

在new_transaction将事务添加到列表之后,它将返回要添加该事务的块的索引:即下一个要挖掘的块。这对于提交事务的用户很有用。

”创建一个新区块“

实例化我们的区块链时,我们需要使用创世区块(就是前面没有任何区块)。

我们还需要在创世区块中添加“证明”,这是挖矿(或工作量证明Proof of Work)的结果。 关于Pow可以参考我之前写过的文章: 金融小课堂 | 加密货币一级市场概述(上)

除了在构造函数中创建创世区块之外,我们还需要实例化new_block,new_transaction和hash这三个方法:

im port hashlib

im port json

from time im port time

class Blockchain(object):

def __init__(self):

self.current_transactions =

self.chain =

# Create the genesis block

self.new_block(previous_hash=1, proof=100)

def new_block(self, proof, previous_hash=None):

"""

Create a new Block in the Blockchain

:param proof:

:param previous_hash: (Optional)

:return:

"""

​ block = {

'index ': len(self.chain) 1,

'timestamp ': time,

'transactions ': self.current_transactions,

'proof ': proof,

'previous_hash ': previous_hash or self.hash(self.chain[-1]),

}

# Reset the current list of transactions

self.current_transactions =

​ self.chain.append(block)

return block

​ def new_transaction(self, sender, recipient, amount):

"""

Creates a new transaction to go into the next mined Block

:param sender:

:param recipient:

:param amount:

:return:

"""

self.current_transactions.append({

'sender ': sender,

'recipient ': recipient,

'amount ': amount,

})​

return self.last_block[ 'index '] 1

​ @property

def last_block(self):

return self.chain[-1]

@staticmethod

def hash(block):

"""

Creates a SHA-256 hash of a Block

:param block:

:return:

"""

# We must make sure that the Dictionary is Ordered, or we'll have inconsistent hashes

block_string = json.dumps(block, sort_keys=True).encode

return hashlib.sha256(block_string).hexdigest

这样一个简单的区块链就大功告成了。

如果您会好奇更深层的问题,比如如何创建,伪造或开采新的区块?

以上就是"vpower:手把手教你搭建区块链(上)"的相关信息了,希望能够帮助您解决问题,想了解更多区块链挖矿知识敬请关注鼎富财经!

文章来源:http://www.alfamp3.com/xwzx/qkl/3150.html


(责任编辑: 1050)

其它人还看了:

  区块网:什么是数据仓库?数据挖掘过程分为五个步骤!

  区块网:有什么区别?处理时间和成本!

  区块网:区块链能否解决全球退休危机?养老金计划需要认真救助!

  区块网:产业区块链化前景日益清晰时 迈科技解决传统行业!

  比特币什么时候挖完?最后一个比特币挖完了谁来记账?

上一篇:玩客币是骗局: quot;正版 quot;概念股来了!区块链50指数横空出世,涵盖金融、游戏、安全、精准医疗这些领域

下一篇:李笑来:共享经济时代区块链的核心应用能做什么

版权声明:本文《vpower:手把手教你搭建区块链(上)》由1050编辑整理,部分资料源于网络,不代表站长观点,与本网站立场无关,仅供阅读学习参考。

对于这篇文章你有什么看法?
  • 全部评论(0
    还没有评论,快来抢沙发吧!

1637398187

联系QQ

鼎富财经股票配资 - 给投资者提供配资平台,股票行情数据分析等,包括配资风险、流程、事项、误区等相关问题解答,是一家专业的门户财经网

长按图片 添加微信公众号
这是一个广告
关闭
这是一个广告
关闭
这是一个广告
关闭
这是一个广告
关闭