[Day4]区块链如何运作?


HI~今天要介绍区块链如何运作,如果对这个主题有兴趣的话,就继续看下去吧!

“区块链是一台神奇的计算机,任何人都可以向其上传程序并让程序自行执行,其中每个程序目前的状态和所有之前发生过的状态都是公开可以看得到的,并且具有非常强大的加密经济安全保证,程序运行链上将会继续按照区块链协议指定的方式执行。” — 维塔利克·布特林

首先先来说一个故事!A同学和B同学今天在打赌,他们打赌老师今天上课会穿红色衣服。如果穿红色,则A要给B 100元比特币,如果不是红色,则B要给A 100元比特币。
也就是B赌红色,A赌不是红色。
https://ithelp.ithome.com.tw/upload/images/20210915/20140143U9mg1DHc2u.png
那他们可以…

  1. 口头讲好。
    他们可以用口头做完这样的打赌,但不能保证明天看到老师的衣服颜色後,输的那方会付100元,他大可以假装把这件事忘掉,避免自己损失钱。
  2. 签订合约书。
    他们可以用白纸黑字写清楚,双方签名以示负责。但万一输的那方违约,赢的人可能要花更多钱更多时间打官司,很辛苦。
  3. 有见证人。
    他们可以请同学帮忙见证,在众目睽睽之下让大家知道他们在打赌,这样明天就不能有人反悔。但这样也有缺点,万一见证人说要付钱才要帮忙见证、万一其中一方去贿络见证人....
    好像每一种方法都有好有坏,这时候就可以将这个打赌放入区块链,先将打赌的钱也就是A、B的各100元比特币放入一个区块中保护,在让区块链去判断明天老师衣服到底是不是红色,万一是红色,则直接将双方的100元转入打赌红衣服的B的虚拟钱包。如果不是红色,则直接将双方的100元(这样一共是200块呦!)转入打赌不是红衣服的A的虚拟钱包。因为区块链具有不可窜改性,所以打赌一旦建立就无法修改与反悔,交给区块链运算後也是公正公开的,比起上面那些方法,这样是不是更方便呢!
    https://ithelp.ithome.com.tw/upload/images/20210915/20140143FdaJQRQzwo.png
    https://ithelp.ithome.com.tw/upload/images/20210915/20140143oKZNk5Ysm1.png
    https://ithelp.ithome.com.tw/upload/images/20210915/20140143jzfsKg9IFK.png

Proof of work工作证明

在进行交易时,数据会被打包成一个区块一个区块的样子,这时候矿工要负责验证每一个区块的交易都是合法的,在验证的过程中可以去想像它在猜密码锁,需要很多的计算来解码。当然同一个区块有可能好几个矿工在算,当第一个算出来的矿工可以大声的向全世界说自己算出来了!如此一来可以获得少少的奖励!

  • 验证交易是否合法
  • 避免双重花费(double spending)
  • 奖励25BTC给第一个完成的矿工
  • 将已验证的交易当成一个新的区块写入链中
  • 可能要花费很多电力做运算

Proof of stake股权证明

这是一种想要解决Proof of work的问题而产生的方法。Proof of stake比较像是你有多少能力就做多少事。你今天有5%的货币可以用,那就最多只能开采5%的量。这可以避免Proof of work中大量耗费能源的问题,以及可以避免被攻击!如果你今天要攻击80%,那你也要有80%的量才能开采!

  • 矿工有多少钱就挖多少交易
  • 避免像proof of work耗费大量能源
  • 避免攻击者攻击

参考资料:
https://onezero.medium.com/how-does-the-blockchain-work-98c8cd01d2ae
https://medium.com/blockchain-review/blockchain-essentials-for-dummies-ba2d8851f1ca


那今天的介绍就到这边拉~如果喜欢的话明天记得继续回来看下一篇!影片记得按赞订阅开小铃铛谢谢大家!
/images/emoticon/emoticon07.gif


<<:  Day 18 - Rancher Catalog(v2.0~v2.4) 介绍

>>:  [ Day 03 ] 建立一个 React.js 专案

AI - 海关图图片侦测判别

1.建立资料库 ----- 建立资料库 CREATE DATABASE [PicTest] ON P...

[DAY11]文字与表情符号

改造的前提必然是要先了解程序的运作原理所以我们要先了解LINE提供给我们那些格式去使用 第一个先说到...

[进阶指南] 不使用 ES6 开发 React( Day27 )

如果不使用 ES6 的 Class,则可以考虑用 create-react-class 。 var ...

[Day 1] 前言-为甚麽要探索?

身为一个 Node 後端工程师, 对我而言 async/await 等非同步语法的使用已经非常顺手,...

[ Day 18 ] - 取消 HTML 预设的触发行为

HTML 部份元素会有预设的触发行为,像是 的连结、表单的 submit 若是需要在这些元素绑定事件...