首页 > 其他分享 >区块链基本原理

区块链基本原理

时间:2023-03-22 22:56:35浏览次数:48  
标签:比特 基本原理 以太 交易 哈希 区块 节点

要解决的难题

1)账本不能被篡改 : 分布式账本,一个坏人要修改,需要经过其他好人的同意

2)账本不能丢失损坏: 多个人记账,分布式账本

3)证明你是你: 匿名,数字签名。 可以由多个账户。

4)同一份钱不能花2次以上。双花攻击:设计一个强时序性的数据结构。若干交易打包成一个块block。 俩笔交易在同一个块打包时会被校验出不合法。 只能有一个被打包到块。系统再收到交易就会余额不足(非法交易)。

chain of blocks .只是一种数据结构。

哈希:不同的输入x得到固定长度的y.(256bit)

区块哈希的输入: 区块编号、数据(多条交易信息)、前一区块的hash值、nonce(随机数)、

这样在一个已知的区块的情况下,可以一直追溯到第一个区块。

有人篡改交易信息。hash值就会发生变化,影响整个链表。

hash函数3个特性

1) 防碰撞:不同的输入x, 一定要产生不同的值y. 碰撞可能存在,可以忽略。
2) 信息隐藏: 很难通过y来计算出x. 保证用户的隐私与安全

3)易出难题, 容易验证,但是计算出满足一定的哈希值很难。

P2P网络

peer to peer 分布式
有新交易产生,节点向自己的所有相邻节点发送交易广播。 直至全网都收到交易信息。
比特币网络节点按功能分为4个功能模块
1)Wallet: 钱包 :签名交易与账户余额管理
2)Miner: 矿工 :挖矿 (计算满足一定条件的哈希值)
3)Full Blockchain: 全节点 :保留全部区块链的数据
4)Network: 路由节点 :提供网络路由服务,让新加入的节点能够找到它的邻居

PoW共识算法

Proof of Work 工作量证明
只要看到结果,就知道你为此付出了大量的工作。

分布式节点为啥要共同维护账本。为啥要加入到网络中,靠激励机制。
就是交易数据要计算哈希值。不是随便计算出一个,这就有难度和工作量了。根据随机数的变化,找到哈希值前面记为都为0.
一旦得到了hash值。验证只需要一次。
平均十分钟左右产生一个区块。
开始每一个块奖励50个比特币,每四年减半。最终全部挖出来是2100万个。 全部挖完咋办, 交易有手续费,矿工始终有动力去挖矿。
十分钟一个区块,四年大概21万个。
100 = 50+25+6.25+3.125+1.5625+….依此类推)
100 * 21万 = 2100万个

UTXO模型

image

比特币的账户模型,和传统的余额模型不一样。不存在账户,只有地址。
账户:私钥 (账户管理权)公钥(私钥加密产生的,不可逆) 比特币地址(公钥经过俩次hash得到的一个字符串,保护了公钥的信息)
一个人的比特币余额就是看 地址里还有多少比特币,计算这个比特币数量的方式或数据结构叫UTXO Unspent Transaction Output(未花费的交易输出)

四笔交易如下:
1: Inputs:
Outputs: 25.0 -> Alice
2:Inputs: 1[0]
Outputs: 17.0 -> Bob, 8.0-> Alice
3: Inputs: 2[0]
Outputs: 8.0 -> Carol, 9.0 -> Bob
4: Inputs: 2[1]
Outputs: 6.0 -> David, 2.0 -> Alice

没有Inputs代表系统奖励。

1[0]代表第一笔交易的第一个输出。
2[1]代表第二笔交易的第二个输出
某个UTXO只要被引用就会失效。实现了交易的原子性。

DApp

去中心化分布式应用 Decentralized Application
不受公司运营的限制,不依赖某个独立的服务器。

因为区块链的存储消耗太大,不可能将所有的数据都保存到区块链中,目前DApp大多是去中心化和中心化相结合。

公链与联盟链

公链:比特币、以太坊、EOS,需要对矿工进行激励,不限制节点的加入
联盟链:小型团体组件的私有网络。联盟确立的时候,职责已经明确,没有激励机制,有准入机制。

区块链挖矿演示

https://andersbrownworth.com/blockchain

image

智能合约

区块链最核心的功能就是存储功能(记账),是一种特殊的数据库,想要在区块链这样的数据库上进行应用开发,就需要找到类似SQL这样的工具。智能合约就是这样的工具。

什么是智能合约

以太坊是一台全球计算机。 以太坊的节点遍布全球。 智能合约就是运行在 以太坊这个全球计算机上的特殊进程

为啥叫智能合约

也叫智能合同。 smart contract. 智能是可以自动化运行。 合约是因为以太坊的合约代码 涉及到一些资产转移。

如果要安装一个智能合约的开发环境,需要有一个以太坊节点。

不同区块链平台的智能合约需要安装 在 对应区块链平台的节点。

Go语言编写的 以太坊客户端:Geth: https://geth.ethereum.org/downloads

安装后添加到环境变量

Geth 三个网

  • 主网:以太坊真实节点运行的网络,节点遍布全球。使用的ETH是真实的虚拟数字货币。
  • 测试网:测试平台环境,
  • 私网:开发者自行组建的网络。

创建私网

  • 01 配置创世块文件 genesis.json
{
	"config": {
		"chainId": 18,
		"homesteadBlock": 0,
		"eip150Block": 0,
		"eip155Block": 0,
		"eip158Block": 0
	},
	"alloc": {},
	"coinbase": "0x00000000000000000000000000000000000000000000",
	"difficulty": "0x2",
	"extraData": "",
	"gasLimit": "0xfffff",
	"nonce": "0x000042",
	"mixhash": "0x00000",
	"parentHash": "0x0000",
	"timestamp": "0x00"
}

Coinbase: 挖矿后获得奖励的账户地址
Difficulty: 挖矿难度
gasLimit: 一个区块所能容纳gas的上限,智能合约指令咋执行时需要消耗gas. 通过以太币自动兑换
nonce: 随机值
mixhash:一个256位的哈希证明,与nonce相结合,验证本块的有效性。
extraData: 附件信息
parentHash: 前一块hash值,因为是创世块,所以为0 



标签:比特,基本原理,以太,交易,哈希,区块,节点
From: https://www.cnblogs.com/clllll/p/17245805.html

相关文章

  • 4G区块链共享租赁,打造高效便捷的房产管理​
    4G区块链共享租赁,打造高效便捷的房产管理​随着城市化的不断发展,房屋租赁市场也在迅速扩大。作为房东,如何高效便捷地管理自己的房产,提高房屋的利用率和效益,成为了摆在他们面......
  • 4G区块链共享租赁,享受更加安全、舒适的居住体验
    在现代社会,随着科技的不断进步和生活水平的提高,租房已经成为许多人生活的一部分。然而,许多租客在租房过程中面临着很多问题,比如租金过高、合同不公、房屋质量不佳等等。为了......
  • FISCO BCOS区块链搭建说明(第一篇)
    说明:此文章针对的是Ubuntu版本的,若要其他版本可以参考官网FISCOBCOS官网链接:​​FISCOBCOS​​第一步:安装依赖这是ubuntu依赖sudoaptinstall-yopensslcurl第二步:创建......
  • 解决ubuntu出现的std::exception::what: bind: Address already in use问题 (FISCO BC
    1、首先问题是这样的 Exceedwaitingtime.Pleasetryagaintostartnode2 Exceedwaitingtime.Pleasetryagaintostartnode3[2022-11-0701:37:47]Initiali......
  • FISCO BCOS v3.x 多群组区块链Pro版本搭建说明(ubuntu)
    1、在root权限下进行创建目录    mkdirfiscoMax2、安装依赖sudoapt-getupdate sudoapt-getinstall-ycurldocker.iodocker-composepython3wget 3、下载pro......
  • 你说使用过ZooKeeper,那来说说他的基本原理吧
    ZooKeeper是一个开放源码的分布式应用程序协调服务,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。ZooKeeper设计目的最终一致性:client不论连接到哪个Serv......
  • 区块链
    区块链是一个注重安全和可信度胜过效率的一项技术,如果说互联网技术解决的是通讯问题,区块链技术解决的则是信任问题。Consistency侧重的是内容在时间顺序上的一致和统一,而......
  • 区块链智能合约
    pragmasolidity^0.8.0;contractNameRegistry{mapping(address=>string)publicnames;functionregister(stringmemoryname)public{names[msg.se......
  • 区块链技术入门教程 - Decert
    区块链是一项令人兴奋和有前途的技术,你也许看到过这些频繁在社交媒体、新闻频道上冒出的新名词:智能合约、代币(通证)、Web3、DeFi、DAO组织。如果你还不是很明白他们的意思......
  • spring-security认证基本原理与认证两种方式
    spring-security认证基本原理与认证两种方式在已导入的工程中添加spring-security的依赖<!--引入springsecurity--><dependency><grou......