主页 > imtoken官网下载教程 > 区块链简介(开发者简介)

区块链简介(开发者简介)

imtoken官网下载教程 2023-03-04 07:29:54

区块链监管

区块链不是一项新技术,而是一堆现有技术的组合,包括分布式技术、密码学等。 比特币诞生于2009年,区块链作为其后端支撑。 2015年才掀起一股浪潮,大家逐渐发现区块链的应用领域远不止代币(token这个词通俗易懂,作为代币产品的替代品,只在特定场合或特定范围内有效范围。例如,比特币、莱特币、以太坊等)

我国对代币有严格的规定,中国人民银行宣布发行首次代币发行(ICO)是一种非法融资方式。 但与此同时,我国支持区块链技术的发展比特币面向企业应用的区块链框架,并于2016年12月将其列为互联网金融的一项技术(参见《北京市“十三五”金融业发展规划》),在此前的8月,北京市金融工作局已经在推动中关村区块链联盟的建立。

截至2018年5月,北京、上海、广州、深圳、浙江、贵州等18个地区出台了相关区块链项目激励政策。 各地都把区块链研发和应用作为重要的战略发展目标,出台了详细的激励政策。 所以抛开代币的概念,区块链的未来还是值得期待的。

最近由于参与项目,收集了一些2018-2023年各领域区块链市值的预测数据,做了一个直方图。

比特币交易链区块拥堵_比特币等于区块链吗_比特币面向企业应用的区块链框架

但是这个数据,我觉得还是看看就好,不要当真==,毕竟区块链的底层技术还不成熟,还有很大的发展空间。 由于供应链金融非常接近区块链的运作模式,因此也在蓬勃发展。

感觉自己说了很多没用的话。 其实我想让大家先了解一下这个领域,包括它的体系。

区块链概述

Melanie Swan在《区块链:新经济蓝图与介绍》中将区块链应用分为区块链1.0、2.0和3.0

区块链1.0:比特币,支持虚拟货币应用,与转账、汇款、数字支付相关的加密货币应用。

区块链2.0:支持智能合约应用 合约是区块链在经济、市场和金融领域应用的基石。 应用包括股票、债券、期货、贷款、抵押、产权、智能财产和智能合约。 2.0的代表是以太坊,以智能合约为中心,用户可以自行编辑智能合约(当然也有一定的风险,比如TheDAO事件,黑客就是从智能合约的漏洞入手。)

区块链3.0:应用是超越货币、金融和市场范围的去中心化应用,特别是在政府、健康、科学、文学和艺术领域。 3.0的代表是EOS(所谓的3.0),但是平台好像不是很稳定,速度也没有他说的那么快。 事实上,3.0 可能仍在开发中。

比特币分类:

1.公链:对所有人开放,任何人都可以参与。

应用包括:比特币、以太币、虚拟货币、大众电子商务、互联网金融等B2C\C2C\C2B场景。

2. 私有区块链:对个人或实体开放

应用包括:数据库管理、审计、防止对数据安全的内部和外部攻击、权限链

3. 联盟链:对特定组织开放

应用包括:40多家银行参与的区块链联盟R3,Linux基金会支持的超级账本Hyperledger,需要注册许可和许可链

用于机构间交易、结算或清算等B2B形式

4.侧链:比特币平均每十分钟出一个块,每个块大小为1MB,每秒可以确认7笔交易。 提高效率的侧链。 闪电网络将很多交易放在侧链上,清算时只使用主链,在不增加主链存储负担的情况下大大提高了交易率。

5. 跨链:将各自垂直领域的区块链相互连接,形成全球区块链网络。

区块链行业架构:协议层、扩展层、应用层。

比特币交易链区块拥堵_比特币面向企业应用的区块链框架_比特币等于区块链吗

协议层

底层技术,完整的区块链产品,维护网络节点,提供API调用。 通常提供简单的客户端。

搭建网络环境,搭建交易通道,指定节点奖励规则,

技术:网络编程、分布式算法、加密签名、数据存储技术。

语言:网络编程强,并发处理简单。 比如Nodejs、Go

又分为存储层和网络层。

比特币选择了谷歌的LevelDB,读写性能都不错。

网络层是编码的重点和难点,包括点对点网络中的分布式算法和加密签名。 《Nodejs开发加密货币》

还有一个单独的对等网络实现:

节点查找、数据传输和验证等逻辑独立性

共识算法、加密签名、数据存储等构成核心层

扩展层

类似于计算机驱动程序,它使区块链产品更加实用。

有两种,一种是各种交易市场,用法定货币兑换加密货币。

二是在某个方向上实现扩展,比如智能合约,即当满足某个条件时,自动执行合约,比如证券转让。

技术无极限,分布式存储、机器学习、VR、物联网、大数据等。

任何需要第三方支付的产品都可以轻松使用区块链

任何需要确认、记入和追溯的信息也可以使用区块链。

应用层

各种客户端(DAPP、钱包等)。

比特币协议层使用C++开发,官方客户端钱包使用Qt,第三方钱包使用Python。 共识算法采用PoW(Proof of work)工作量证明机制。

以太坊提供Go(go-ethereum)\Java(Ethereum(J))\Python等多语言实现。 客户端包括 Rust、Ruby、Javascript 等。

大家对区块链的定义就是一个分布式的公共数据库,或者账本。 所以功能很明显:存储。 存储了什么? 不可变交易。

一段时间内产生的交易被打包成一个区块,这个区块被挖出(称为挖矿)后,与最长的链(区块数量最多)相连,形成区块链。

我们了解区块链如何在比特币区块链方面运作。

比特币地址

首先,让我们看一下比特币地址。 作为交易用户,我们每个人首先要有一个地址,这样我才能给你转账。

比特币地址由数字和字母组成。 生成过程如下:

比特币交易链区块拥堵_比特币等于区块链吗_比特币面向企业应用的区块链框架

如果公钥和私钥有问题,请参考密码学。

非对称加密:每个人都有两把钥匙,一把只有自己知道(私钥),一把可以对外公开(公钥); 用私钥加密的信息只能用公钥解密,连私钥都不能用。 公钥可以通过私钥生成很多密钥。

用户随机生成私钥,然后通过私钥生成公钥,用SHA256加密函数对公钥进行加密,再用RIPEMD160加密得到公钥HASH。 再经过两次SHA256加密后,将前四个字节作为验证码加到原来的公钥HASH上,然后加上对应的版本号(目前为0x00),将这些字节组合起来,通过Base58,生成一个58字节的哈希比特币地址。

贸易

对于每一个账户,比特币存储的不是它的余额(还剩多少比特币),而是一条交易记录。 比如A给我转了1个比特币,B给我转了2、2个比特币,这些账单就存起来了。 比特币的创新在于UTXO(Unspent Transaction Output,未花费的交易输出)。 也就是说,我要发起一笔交易,将两个比特币转给C,此时交易的输入是UTXO的一部分。 我有一些账单是别人转给我的,一张是A的,两张是B的,所以我转给C的交易可能用的是B转给我的钱。

我们来看看交易的输入和输出:

比特币等于区块链吗_比特币交易链区块拥堵_比特币面向企业应用的区块链框架

前一个 tx 的值是一个 UTXO 的哈希值。 在这个例子中,我选择了 C 转给我的 2 个比特币,然后把钱给了 C。作为输入的交易可以是多个。 (比如我要转D3个比特币,A和B单笔交易肯定是不够的)

输入脚本:即scriptSig是转账方私钥生成的数字签名,即转账方需要证明自己拥有公钥哈希对应的私钥,才能使用这个UTXO。 scriptSig 的下一行是传输者的公钥。

价值是转移的数量。

scriptPubKey:是输出脚本,包含几个脚本命令和收款人地址。

下面我们来看一下脚本执行过程。

比特币的脚本是基于栈的,后进先出。

交易一:A转账给B

输入:A的签名&公钥

输出:B的公钥HASH

交易2:B转账给C

输入:B的签名&公钥

输出:C的公钥HASH

先执行交易2的输入脚本,将签名和公钥从左到右压入栈中; 然后执行事务1的输出脚本OP_DUP——复制栈顶元素。

比特币面向企业应用的区块链框架_比特币交易链区块拥堵_比特币等于区块链吗

然后OP_HASH160计算栈顶元素的HASH,即A的公钥HASH,即A的比特币地址。 然后将事务 1 的输出中的地址(A 的地址)压入堆栈。

比特币面向企业应用的区块链框架_比特币交易链区块拥堵_比特币等于区块链吗

接下来,OP_EQUALVERIFY 判断栈顶的前两个元素是否相等。 相等则继续执行,不相等则终止。 最后OP_CHECKSIG用于签名校验,即公私钥匹配。

比特币交易链区块拥堵_比特币等于区块链吗_比特币面向企业应用的区块链框架

一系列的指令证明要花费UTXO中的比特币的人是否有对应的私钥,即这笔转账是否转给了A,或者A是否有花费的权限。

矿业

然后我们需要看看挖矿。

我们来看看区块头的数据结构。

比特币交易链区块拥堵_比特币面向企业应用的区块链框架_比特币等于区块链吗

Merkle 树是交易的哈希树。 两两合并最终形成根节点。 让我们看一张更完整的图:

比特币等于区块链吗_比特币面向企业应用的区块链框架_比特币交易链区块拥堵

我们常说挖矿就是找到这个随机数Nonce。 其实hash在出块的时候是固定的,Nonce的值是从0开始的。第一笔交易是coinbase(挖矿交易),也就是挖矿交易的输出地址就是你的唯一地址,所以虽然出块时的hash是固定的,每个块的merkle树根节点不同,所以每个矿工挖出的块的hash是不同的。

挖矿的目的就是改变这个Nonce的值,一般是从0开始,往上递增。 每次 Nonce 发生变化,我们都会重新计算区块的 HASH,直到得到的 HASH 值满足区块头中的目标值。 这个目标值是一个标准,通常前n位为0,如果矿工计算出的哈希值小于等于目标值,即至少前n位为0,则挖矿成功。 目标值也称为难度值。 比特币规定十分钟内挖出一个区块。 如果快于或慢于十分钟,目标值将自动调整,使挖矿更难或更容易。 保证十分钟出块。

当然,区块中的交易就是这10分钟内产生的交易。 如果交易过多(因为每个区块大小为1MB,存储的交易数量有限),会被下一个区块继续打包。

要找到这个随机数并不容易,因为哈希函数的性质决定了这个数字不能一下子猜到。 只有一次试算,因为通常是从0开始比特币面向企业应用的区块链框架,逐个加,所以最终的Nonce值就是矿工执行的hash。 哈希的数量。

同时我们可以发现,要找到随机数并不容易,但验证起来却极其简单。 你只需要将随机数带入区块,其他节点就可以用一个hash来验证某个挖出区块的矿工节点。