了解有关PolygonProofofStake侧链的所有信息以及它如何帮助以太坊扩展。然后通过快速启动NFT项目将Polygon与以太坊进行比较。
自年成立以来,以太坊已成为能够支持图灵完备智能合约的区块链平台的事实上的领导者。以太坊在促成一场我们现在称为Web的革命方面发挥了重要作用。最大的去中心化交易所、NFT市场和收益农业协议都驻留在以太坊上。该链负责处理价值数十亿美元的价值,它为创造者和投资者开辟了以前深不可测的途径。尽管以太坊dApp在其用户中广受欢迎,但它们距离实现大规模采用还差得很远。使用dApp的人数仍然只有几百万。造成这种情况的最大原因之一是该链特有的扩展障碍。除了少数高净值用户外,它很快就会变得无法使用。幸运的是,社区为帮助以太坊扩展做出了认真的努力。到目前为止,当今市场上最流行的扩展解决方案是PolygonPoS(权益证明)侧链。在本文中,我们将探讨Polygon是什么以及它如何克服以太坊的缺点。最后,我们将通过创建NFT铸造智能合约对两条链的性能进行并排比较。以太坊的问题以太坊尽管处于市场领先地位,但仍存在许多问题:低交易吞吐量:以太坊每秒只能处理15笔交易。与每秒处理超过25,笔交易的Visa或Mastercard等解决方案相比,这个数字微不足道。高GasFees:当一个链可以处理少量交易时,当交易量高时它必须增加处理成本。以太坊因其高昂的汽油费而臭名昭著。例如,不久前,在流行的NFT铸币厂(称为Otherside)期间,它达到了近7Gwei。在此期间,即使是最基本的交易也会花费您超过美元。缓慢的交易终结性:以太坊大约每15秒向其链添加一个块。由于有多个矿工同时竞争开采区块,一个区块必须至少添加4-5个区块才能被视为最终区块。从本质上讲,交易被认为是最终的需要一分钟多的时间。对于游戏和金融工具等应用程序,如此缓慢的交易最终确定性根本无法接受。解决方案为了实现大规模采用和接受,必须在以太坊之上开发一种解决方案来解决其最明显的问题。本质上,我们需要一个具有以下特点的解决方案:低成本:即使是计算量最大的交易也不应该花费超过几美分。快速:交易几乎立即得到确认。EVM兼容:开发人员无需学习新工具或语言即可构建解决方案。与以太坊互操作:易于在以太坊和解决方案中存入和提取资金。参与社区:一个致力于随着时间的推移改进解决方案并在其之上构建用户友好的dApp的社区。可持续:任何寻求大规模采用的解决方案也必须具有环保意识。以太坊核心开发人员正在研究第1层扩展修复,例如分片,但这些解决方案还远未完成。我们需要当今可用的解决方案,任何人都可以轻松上手。介绍多边形Polygon的创建者设计了一条具有上述所有功能的链。自年成立以来,Polygon链已成为最受欢迎的以太坊扩容解决方案之一。从技术上讲,Polygon是一个以太坊侧链。侧链是通过桥连接到以太坊的独立区块链。与L2不同,侧链不继承以太坊主链的安全特性。相反,他们实现了自己的共识协议和区块参数。因此,侧链不需要将状态更改和交易数据发布到以太坊(而L2是)。侧链与以太坊的更大独立性使Polygon更加集中,但也使其能够实现极高水平的吞吐量。以下是Polygon在以太坊上实现的改进:高交易速度:Polygon能够处理高达65,tx/秒,与其中心化竞争对手的规模相当。低交易成本:即使是Polygon上最重的交易也只需几美分。在大多数情况下,与以太坊相比,成本降低了10,倍。即时交易最终确定性:Polygon的共识协议保证交易几乎是即时确认的(不到2秒)。EVM兼容:Polygon建立在与以太坊相同的软件上。因此,以太坊开发人员可以使用完全相同的工具在Polygon上进行构建。强大的社区:Polygon团队花费了数百万美元来建立一个由建设者、投资者和用户组成的强大社区。它已经是以太坊上一些最受欢迎的dApp的所在地,具有更好的用户体验和更便宜的成本。低能耗:Polygon使用Proof-of-Stake协议,其能耗比PoW低99.9%。事实上,Polygon已承诺到年底实现负碳排放,使其成为当今市场上最大的环保区块链之一。PolygonPoS安全注意事项与其他侧链不同,PolygonPoS确实有一种方法可以继承以太坊的安全性。PolygonPoS链利用PlasmaBridge来维护和保证高水平的安全性。Plasma有一个独特的退出机制,基本上是一组智能合约来帮助移动资产和检查点以进行验证,这使得PolygonPoS能够利用以太坊的安全性。这里唯一的缺点是通过PlasmaBridge从Polygon到Ethereum的提款必须经过7天的提款期。使用PoSBridge可以更快地提款(在0分钟到小时内),但是这种方法不如使用PlasmaBridge安全。这两个桥接器仍然安全可靠,并且在大多数情况下都可以很好地满足用户的需求。但是,如果您的项目需要最先进的安全性,请谨慎考虑使用PolygonL2解决方案,例如Zero、Nightfall和Hermez。比较行动现在我们已经看到了PolygonPoS在某些项目中相对于以太坊的优势,让我们分析一下在两条链上的部署。在本文的以下部分中,我们将创建一个简单的NFT合约并将其部署到PolygonMumbai和EthereumGoerli测试网。我们将观察两条链的开发过程是如何几乎相同的。接下来,我们将分析之前(由其他团队)在以太坊和Polygon主网上部署的NFT合约,然后比较成本和确认时间。NFT项目概述我们要创建的项目非常简单。我们想要编写和部署一个ERC-合约,将单个NFT铸造到我们选择的区块链中。此类项目的第一步是创建NFT艺术及其相关元数据,然后将其上传到IPFS。对于本教程,我们已经为您完成了这项工作。您可以查看上传到IPFS的图像和相关的NFT元数据。NFT熊猫图片查看文章“使用NFT元数据、IPFS和Pinata”以了解更多信息。创建NFT合约第1步:安装MetaMask扩展如果您还没有,请为您的浏览器安装MetaMask扩展。安装后,MetaMask将指导您创建您的第一个钱包。第2步:将Goerli和Mumbai链添加到MetaMask默认情况下,MetaMask配置了以太坊主网和Goerli测试网。要添加Polygon主网和Mumbai测试网链,请按照文档中的说明进行操作。第步:从水龙头中获取GoerliETH和MumbaiMATIC前往Alchemy的Goerli水龙头页面并申请一些免费的GoerliETH。您可能需要为此创建一个免费的Alchemy帐户。如果一切顺利,当你切换到Goerli测试网络时,你的钱包里应该有0.05GoerliETH。同样,从Polygon的官方水龙头获得一些免费的MumbaiMATIC。如果成功,切换到孟买链应该会告诉你你有0.2MATIC的余额。第4步:安装NPM和节点我们将使用JavaScript和node构建我们的项目。如果您的本地计算机上没有安装node和npm,您可以在Node.js下载页面上安装。您可以通过检查终端上节点的版本号来确保一切正常。$node-v第5步:创建节点项目并安装依赖项让我们通过运行以下命令来设置一个空的项目存储库:$mkdirnft-contractcdnft-contract$npminit-y我们将使用行业标准的以太坊开发环境Hardhat来构建和部署我们的智能合约。通过运行安装Hardhat:$npminstall--save-devhardhat我们现在可以通过运行以下命令并选择Createabasicsampleproject创建一个示例Hardhat项目。$npxhardhat同意所有默认设置(项目根目录、添加.gitignore和安装所有示例项目依赖项)。要检查一切是否正常,请运行:$npxhardhattest我们现在已经成功配置了我们的安全帽开发环境。接下来让我们安装OpenZeppelin合约包。这将使我们能够访问ERC-实现(NFT的标准),在此基础上我们将构建我们的合约。$npminstall
openzeppelin/contracts第6步:编写智能合约在您喜欢的代码编辑器(例如,VSCode)中打开存储库。在contracts文件夹中,创建一个名为NFTContract.sol.我们将创建一个非常简单的ERC-合约,在部署时(即在构造函数中)生成单个NFT。将以下代码添加到文件中:Ja//SPDX-License-Identifier:MITpragmasolidity^0.8.4;import"openzeppelin/contracts/token/ERC/extensions/ERCURIStorage.sol";contractNFTContractisERCURIStorage{constructor()ERC("PandaNFT","PNFT"){//MintNFT_mint(msg.sender,0);//Setmetadata_setTokenURI(0,"ipfs://QmUyZoK21qb8YknXGfDB4RTY8vMqPb6Bsj9U9iLEnyrZR");}}第7步:在本地部署合约现在让我们编写一个脚本来在本地部署和测试合约。在脚本文件夹中,创建一个名为run.js并添加以下代码的新文件:consthre=require("hardhat");asyncfunctionmain(){constcontractFactory=awaithre.ethers.getContractFactory("NFTContract");constcontract=awaitcontractFactory.deploy();awaitcontract.deployed();console.log("Contractdeployedto:",contract.address);}main().then(()=process.exit(0)).catch((error)={console.error(error);process.exit(1);});
现在在您的终端上运行以下命令:$npxhardhatrunscripts/run.js第8步:将合约部署到Goerli为了将合约部署到Goerli,我们必须将网络添加到hardhat.config.js文件中。module.exports将文件末尾的对象替换为以下内容:
module.exports={solidity:"0.8.4",networks:{goerli:{url:"