柚子快报激活码778899分享:区块链学习笔记
1.从faucet里面获取0.25代币:
24h内只能获取一次:Get Testnet LINK Tokens | Chainlink Faucets
2.笔记,测试
区块链示例:https://andersbrownworth.com/blockchain/block
Nonce:1
hash:31ee046c4ccb858a794e279118d40fceab698b44a947ad1fbafad9c01612e978
3. {% post_link whatbc 区块链记账原理 %}
我们了解到,每次记账的时候会把上一个块的Hash值和当前的账页信息一起作为原始信息进行Hash。如果仅仅是这样,显然每个人都可以很轻松的完成记账。
为了保证10分钟左右只有一个人可以记账,就必须要提高记账的难度,使得Hash的结果必须以若干个0开头。同时为了满足这个条件,在进行Hash时引入一个随机数变量。
改变Hash的原始信息的任何一部分,Hash值也会随之不断的变化,因此在运算Hash时,不断的改变随机数的值,总可以找到一个随机数使的Hash的结果以若干个0开头,率先找到随机数的节点就获得此次记账的唯一记账权。
XXXerror:要在其前面加0000,得到新的Nonce。
可能是得到0000开头的一组hash,根据新Nonce和data,
挖矿后:
数字签名
私钥:123456
公钥:
私钥加message:=message signature
验证:message+公钥=signature(你的签名)
1.你的私钥用来对信息签名,公钥让别人来验证签名是你的;
以太坊地址是由公钥衍生过来的,eg,取公钥后20字节
2.验证
在节点成功找到满足的Hash值之后,会马上对全网进行广播打包区块,网络的节点收到广播打包区块,会立刻对其进行验证。
如果验证通过,则表明已经有节点成功挖出区块,自己就不再竞争当前区块打包,而是选择接受这个区块,记录到自己的账本中,然后进行下一个区块的竞争猜谜。
区块奖励:(gas)
一个链 用的人越多,发送交易就越贵在区块链中,区块存储交易的空间有限,为了让你的交易能被写在某个区块中,你需要支付手续费,根据情况调节base gas,调节依据是,人员交易数量,被写入的数量上下增减
区块链概念
网络进入门槛就是一些硬件要求和软件运行环境,你能运行软件就能加入网络;每个人都加入参与网络,这就是真正的去中心化;(我们只是提供一种或可解决的方法罢了)github,几分钟内运行一个以太坊节点;传统世界,APP被单一主体运营,崩坏即无;以太坊,运算共识consensus:机制,在状态和数值上达成一致。两种:Chain Selection链选择算法,Sybil Resistance抗女巫攻击机制;防止用户使用大量的假身份。区块奖励:有区块链协议自身发给节点的,增加密货币的流通量,比特币减半,区块奖励减半?以太坊:区块奖励以太币,比特币网络:比特币
Sybil Resistance
PoW工作量证明proof of work(矿工) 我们怎样确定哪个区块链是正确的链? Nakamoto Consensus 中本聪共识(比特币和以太坊1.0中使用,包括PoW和最长链规则) PoS权益证明(验证者)以太坊2.0 放置一些抵押物以保证不作恶,stake,质押 Scalability 可扩展性 Sharding 分片,多个区块链的区块链有一个主链会协调一些不同的链,将他们链接在一起 layer1:base layer blockchain implementation 基础层(比特币,以太坊,avalanche) layer2:any application built on top of a layer2
1.部署到测试网上
部署步骤先改变网络,然后进行connect,随后account会自动填入,接着点击Deploy 等待一会儿,出现绿色对√ 把合约部署到区块链上会修改区块链状态,因此我们必须支付gas
gas limit 和gas uasge单纯发以太币要高得多,因为我们把大量数据送到了链上,进而增加了大量的计算。
进行数据store:会花费gas okay!!!!已经成功将首个合约部署到了一个测试网上!!
2.尽量最后一步部署到测试网上,因为漫长等待和花费
3.总结
EVM,Ethereum Virtual Machine 是以太坊区块链上部署智能合约的一个标准,并且任何实现某种EVM的区块链,你都可以把solidity代码部署上去。
//首先确定solidity的版本,因为他经常更新版本
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8;//可以写成^0.8.8 比此新的版本都可以适用此代码
//EVM,Ethereum Virtual Machine 是以太坊区块链上部署智能合约的一个标准,
//并且任何实现某种EVM的区块链,你都可以把solidity代码部署上去.
//部署合约
contract SimpleStorage{
//booleean,unit(无符号数,+),int,address(地址),bytes
//bool hasFavoriteNumber = true;
// uint128 f = 123;
//string text = "five";
//address myaddress = 0x8c7F90a1fD9B2bc3b936aa918c9f6C489B677750;
//bytes32 bytee = "cat";//自动转换为byte,0x123hdsk
//This gets initialized to zero!
uint256 FavoriteNumber; //全局变量
//创建一个新的people并将其分配给这个person 变量
// People public person = People({FavoriteNumber:2,name:"xaiw"});
//当你创建一个映射时,会把所有东西都初始化为空,故而查询时找不到之前的数组信息
//需要重新添加 一下
mapping(string => uint256) public namaTofavoriteNumber;
struct People{
uint256 FavoriteNumber;
string name;
}
//多个的话,可以写成数组的形式
//uint256[] public FavoriteNumber;
People[] public people; //空列表;
//function
function store(uint256 _FavoriteNumber) public {
FavoriteNumber = _FavoriteNumber;
}
//view,pure
function retrieve() public view returns(uint256){
return FavoriteNumber;
}
function addPerson(string memory _name, uint256 _FavoriteNumber) public {
// people.push(People(_FavoriteNumber, _name));//push表示添加;创建新的People对象,他将接收_FavoriteNumber,and name
People memory newPerson = People(_FavoriteNumber,_name);
// People memory newPerson = People({FavoriteNumber:_FavoriteNumber,name:_name}); //效果相同
people.push(newPerson);
//甚至直接
//people.push(People(_FavoriteNumber,_name));
//我们把人添加到数组中,我们也要把人添加到映射中
namaTofavoriteNumber[_name] = _FavoriteNumber;
}
}
//solidity基础:EVM store in six places:Stack,memory,storage,calldata,code,logs
//calldata,不可被修改的临时变量,storage永久修改
//mapping映射,字典,key键值对
柚子快报激活码778899分享:区块链学习笔记
精彩链接
发表评论