p1基础介绍
Fabric需要配置环境
hash概念:输入任何数据可以得到与其对应的hash值。发现不管data的长度是多少,它对应的hash长度是不变的;data也可以传空值,即空值也会对应一个hash;
nounce:是计算满足条件的随机数
区块:block+nonce+data+timestamp+previous hash->hash
blockchaindemo.io网址
nonce值:是满足某一区块难度的随机数
不同的peer(节点)数据是一样的,相当于不同的记账的村民
不是每一笔交易产生一个区块的,而是每10min产生一笔交易,所以一个区块里面可以有很多笔交易
前端可以通过web3.js的API直接获取合约的实例对象
chaincode链码就是智能合约
Ordering Service 排序服务默认有三种:Solo(单节点共识)、Kafka(分布式队列)、SBFT(简单拜占庭容错)
Hyperledger 是超级账本的意思
联盟链和私有链是不需要去挖的,只要节点之间达成共识就可以了
演示:在终端输入如下命令:
npm install blockchain-cli -g //安装所需要的包等
blockchain //创建创世区块
bc //即可以看到当前挖了有多少区块
mine "ab 100" //a给b转账100元,mine后面的是区块包裹的数据
然后可以通过bc来查看
下面是js代码来判断hash值是否有效
function isValidHashDifficulty(hash, difficulty){
for(war i=0,b=hash.length;i<b;i++){
is(hash[i]!='0'){
break;
}
}return i>=difficulty;
}
就是PoS工作量证明
p2公有链合约部署
可以通过remix、metamask(浏览器的钱包[一个狐狸那个])部署
每一笔交易后会返回一个合约的地址,相当于一个存储空间的地址。类在部署完会产生一个合约对象,可以把remix上的代码看作是图纸,当部署完之后会产生一个图纸所生产的产品(如:电脑),这个产品即为实例对象。
前端可以通过web3.js的API直接获取合约的实例对象
.sol是智能合约的程序,由remix编写
部署到Main Ethereum Network即公网需要花费以太币,所以可以部署到测试网络(KovanTestNetwork),可以从测试网络获得测试币,测试的网络与公网没有任何差别。
部署步骤:
首先在remix编写代码,然后切换到run->environment->Injected Web3,account是当前meta mask的钱包地址(地址中有代币)
然后点一下create,会弹出一个metamask钱包的窗口,部署合约的过程(就是上链)就是生产电脑的过程,需要花费代币,点击submit就可以部署成功(电脑已经生产成功),会返回一个地址,想查看其属性(电脑大小等属性)可以通过地址来查看
可以点击查看当前区块的相关信息,有交易的区块 hash 时间戳 合约地址
取区块链数据不需要花费gas,而部署才需要
点击contracts就可以按照要求顺序实现部署
超级账本就属于联盟链,一部分有权限,另外的没有权限,即只能由选定特定的节点来达成共识,来确权