Code Monkey home page Code Monkey logo

blockchain-in-js-workshop-2021's Introduction

实验报告模板

--------------------------实验报告模板-----------------------

小组成员

  • 2021131104-罗嘉 (组长)
  • 2021131106-王宇佳
  • 2021131101-王语阳
  • 2021131122-陈祥福
  • 2021131102-张正阳
  • 2021131123-李碧友

代码仓库链接

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021

做前六次的时候没有想到把每次更新修改的内容要提交到分支里面,做到final的时候才意识到,但是之前的lesson1-lesson6的修改都已经无法再提交到分支上了,所以lesson1-lesson7的全部更新都在lesson1

第一课代码

代码 commint 地址

代码截图

主观与讨论题内容


第一课代码

代码 commint 地址

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021/commit/47a070ca9e4844d5c118a8b10029fac37888c622

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021/commit/76ac386b989cbfc0cdf75760a2270a558a98cb1f#diff-790164bb6d107a3c138e494d5b9634a9fe09a7d129317f5487c9198d2eae8275

代码截图

iY6fXE.png

iY6V0Q.png

iY6yKC.png

iY6ADP.png

主观与讨论题内容


第二课代码

代码 commint 地址

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021/commit/1866b236759905e1e80568a5446daf38e03ff722

代码截图

iurr8U.png

主观与讨论题内容

1.PoW(Proof of Work)挖矿的特点:

优势:

  • 安全性高:PoW是一种通过计算复杂的数学难题来保护区块链网络的共识机制。这种机制要求矿工投入大量的计算能力来解决问题,确保网络的安全性和抵抗攻击的能力。
  • 抵制双重花费:PoW通过要求矿工为了获得奖励必须提供解决难题的工作证明,从而保证了交易的有效性,并且抵制了双重花费问题。
  • 去中心化:PoW挖矿是一种去中心化的方式,任何人都可以参与挖矿过程,没有特殊权限要求,因此有助于分散权力,避免集中控制。

缺点:

  • 能源消耗高:PoW挖矿需要大量的计算能力,因此耗电量也很高。这导致了对能源的大量消耗,对环境产生了负面影响,同时也使得挖矿成本较高。

  • 可扩展性有限:由于PoW算法的性质,随着参与挖矿的矿工数量增加,网络的难度也会增加,使得挖矿的速度变慢。这导致了PoW机制的可扩展性受限,难以应对大规模的交易处理需求。

2.提高挖矿效率的技术手段:

  • 硬件优化:通过改进挖矿所使用的硬件设备,如ASIC(专用集成电路),可以提高挖矿效率。ASIC芯片专门为特定的加密算法设计,使得计算能力更强,从而加快挖矿速度。

  • 挖矿池:挖矿池是多个矿工联合挖矿的集体组织,通过共享计算资源和奖励,提高整体挖矿效率。挖矿池能够更平均地分配工作量,减少矿工之间的竞争,提高整体挖矿速度。

  • 协议升级:通过对挖矿协议的改进和优化,可以提高挖矿效率。例如,使用更高效的加密算法或改变难度调整算法,使得挖矿更加快速和有效。

  • Layer 2 解决方案:引入Layer 2解决方案,如闪电网络(Lightning Network)或侧链技术,可以将部分交易从主区块链转移到辅助链上进行处理,减轻主链的负担,提高整体挖矿效率。

  • 其他共识机制:除了PoW,还存在其他共识机制,如Proof of Stake(PoS)或Delegated Proof of Stake(DPoS),它们具有较低的能源消耗和更高的扩展性,可以提高挖矿的效率。

  • 节能矿机和绿色能源:开发和使用节能的矿机设备,结合使用可再生的绿色能源,可以减少挖矿对环境的影响,并提高挖矿的效率。

通过这些技术手段,可以在一定程度上提高挖矿的效率,使得整个区块链网络更加可靠、可扩展和环保。

第三课代码

代码 commint 地址

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021/commit/f1ae68433251121f7e78f629ca64bc5c98510b3c

代码截图

VUVaRP.png

主观与讨论题内容


第四课代码

代码 commint 地址

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021/commit/5e9c74a61ae9950be2b3585de7bce11546799b39

代码截图

V0Z0Xk.png

主观与讨论题内容


第五课代码

代码 commint 地址

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021/commit/23a52e3df7a71687ca5d87c2db39d1d039e43541#diff-64c6840569345fb6ba005b0ba6092431412484098f08acb71c311a4bf39eb51c

代码截图

Vw6j63.png

主观与讨论题内容

小组讨论: 当讨论比特币交易的处理极限时,有两个关键因素需要考虑:比特币区块大小和比特币挖矿难度。

  1. 比特币区块大小: 比特币区块的大小限制了一段时间内可以包含的交易数量。当前比特币的区块大小限制是1MB(随着SegWit的引入,实际上达到了4MB的容量),这限制了每个区块可以包含的交易数量。如果交易量超过了区块的容量限制,交易将会排队等待被确认,从而导致交易确认时间延长和交易费用增加。因此,比特币的区块大小对于处理大量交易具有一定的极限。
  2. 比特币挖矿难度: 比特币挖矿难度是一个动态调整的参数,用于控制新区块产生的速度。难度的调整是基于过去一段时间内的挖矿算力,旨在维持每10分钟产生一个新的区块。随着全球的比特币挖矿算力增加,难度也会相应增加,以保持新区块产生的速度稳定。

当交易数量增加时,如果交易处理速度无法跟上交易的生成速度,交易会积压在交易池中等待被打包到区块中。这可能导致交易确认时间延长。同时,随着挖矿难度的调整,需要更多的算力才能成功挖到新的区块,这可能对小规模的矿工或挖矿设备产生一定的影响。

因此,比特币交易处理的极限取决于区块大小限制、交易的生成速度以及挖矿难度的调整。随着技术的发展和比特币网络的扩容方案的实施,这些极限可能会得到改善或突破。


第六课代码

代码 commint 地址

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021/blob/fme-lesson1/src/models/UTXOPool.js

代码截图

V2xg3U.png

主观与讨论题内容

  1. 讨论思考什么样的交易费用是合理的: 讨论交易费用合理性时,通常需要考虑以下几个方面:
  • 网络维护成本:交易费用的一部分可能被用于支持和维护网络基础设施。比特币网络是通过矿工来维护的,他们通过打包交易并参与挖矿来获得奖励。因此,交易费用的一部分可以视为对矿工提供的服务和网络安全性的补偿。
  • 交易速度和确认时间:交易费用的高低可以影响交易的优先级和确认时间。通常情况下,支付较高的交易费用可以使交易更快地被打包和确认,而较低的费用可能会导致交易延迟确认或被优先级较高的交易取代。
  • 竞争力和市场因素:交易费用也受市场竞争和交易所政策的影响。不同的交易所可能会设置不同的交易费用结构,以吸引用户或提供特定的服务。因此,合理的交易费用应该考虑市场上的竞争情况和其他交易所的费用水平。
  1. 如果去掉交易费用比特币网络会发生什么: 如果去掉比特币网络中的交易费用,可能会引发以下问题:
  • 网络拥堵:交易费用的存在有助于限制网络上的交易数量,防止网络拥堵。如果没有交易费用,用户可以发送大量小额交易,导致网络堵塞和交易处理效率下降。
  • 安全性问题:交易费用的一部分用于激励矿工来维护比特币网络的安全性。如果没有交易费用,矿工可能缺乏足够的激励来保持网络的安全性和稳定性。
  • 挖矿奖励减少:目前,矿工通过打包交易和挖矿来获得奖励,其中包括新发行的比特币和交易费用。如果去掉交易费用,矿工的收入将减少,这可能会导致矿工减少,进而影响网络的安全性。

综上所述,交易费用在比特币网络中起着重要的作用,维护网络的正常运行和安全性。去掉交易费用可能会引发一系列问题,并对网络产生不利影响。


结课报告

代码 commint 地址

https://github.com/ForMikasaEver/blockchain-in-js-workshop-2021/commit/9075908cf9e7ff79abe10f3f42e177f0adf5bd35

代码截图

Vb6rRJ.png

blockchain-in-js-workshop-2021's People

Contributors

formikasaever avatar mistorychen avatar caosbad avatar lbiyou avatar rangerx42 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.