
解决MetaMask在切换到已停用网络时出现的UI卡住问题。
重现问题步骤:将MetaMask网络切换至Rinkeby或其他已停用网络。相关链接https://community.metamask.io/t/metamask-error-doesnt-go-away-and-prevents-me-using-the-extension/25909/10 https://github.com/MetaMask/metamask-extension/issues/19564问题表现:UI层被卡住,无法关闭提示框和使用MetaMask。解决步骤:打开MetaMask开发者工具,找到ID为“popover-content”的元素。删除该元素。此时卡住的UI层消失,可以正常关闭其他提示并使用MetaMask。MetaMask网络成功切换至以太坊主网络。Subscribe

解决MetaMask在切换到已停用网络时出现的UI卡住问题。
重现问题步骤:将MetaMask网络切换至Rinkeby或其他已停用网络。相关链接https://community.metamask.io/t/metamask-error-doesnt-go-away-and-prevents-me-using-the-extension/25909/10 https://github.com/MetaMask/metamask-extension/issues/19564问题表现:UI层被卡住,无法关闭提示框和使用MetaMask。解决步骤:打开MetaMask开发者工具,找到ID为“popover-content”的元素。删除该元素。此时卡住的UI层消失,可以正常关闭其他提示并使用MetaMask。MetaMask网络成功切换至以太坊主网络。Subscribe
以太坊交易 -内存池
什么是内存池?内存池或内存池是等待节点验证的待处理事务的集合,然后再将它们提交到区块链上的新块。简而言之,内存池是节点中未确认交易的暂存区。网络中的每个区块链节点都有一个内存池,它们都相互通信以共享有关最新待处理交易的信息。 内存池的存在是因为每个区块只能确认约 200 笔交易,这些交易大约每 15 秒开采一次。 因此,待处理的交易会在整个内存池网络中广播,并带有相关的 gas 价格(即发送者愿意为完成交易而支付的 gas 费用)。当一个区块被开采时,开采最新区块的节点将确认到区块链上具有最高 gas 价格的约 200 个待处理交易。 如果交易未能通过一系列验证检查,或者提交的gas太少,这些交易最终将从内存池中删除。什么是随机数?随机数是一个 0 索引的数字,对应于特定地址发送的已确认交易的数量。也就是说,如果一个地址有 0 个已确认交易,它会将其第一笔交易标记为随机数 0,并将其想要发送的后续交易标记为随机数 1。 由特定发件人地址确认的每笔交易都必须具有唯一的 nonce 值。例如,如果一个发送者提交了两个 nonce 值为 1 的交易,那么只有一个可以成功。为什么需要设置...
以太坊交易 -内存池
什么是内存池?内存池或内存池是等待节点验证的待处理事务的集合,然后再将它们提交到区块链上的新块。简而言之,内存池是节点中未确认交易的暂存区。网络中的每个区块链节点都有一个内存池,它们都相互通信以共享有关最新待处理交易的信息。 内存池的存在是因为每个区块只能确认约 200 笔交易,这些交易大约每 15 秒开采一次。 因此,待处理的交易会在整个内存池网络中广播,并带有相关的 gas 价格(即发送者愿意为完成交易而支付的 gas 费用)。当一个区块被开采时,开采最新区块的节点将确认到区块链上具有最高 gas 价格的约 200 个待处理交易。 如果交易未能通过一系列验证检查,或者提交的gas太少,这些交易最终将从内存池中删除。什么是随机数?随机数是一个 0 索引的数字,对应于特定地址发送的已确认交易的数量。也就是说,如果一个地址有 0 个已确认交易,它会将其第一笔交易标记为随机数 0,并将其想要发送的后续交易标记为随机数 1。 由特定发件人地址确认的每笔交易都必须具有唯一的 nonce 值。例如,如果一个发送者提交了两个 nonce 值为 1 的交易,那么只有一个可以成功。为什么需要设置...

ETH2.0合并之后对于测试网的变化
创新变化以太坊核心开发人员决定未来将维护以下测试网,包括合并:Sepolia 测试网(PoW),链 ID 11155111,https: //sepolia.devGoerli 测试网(PoA,更名为 Prater 测试网),链 ID 5,https: //goerli.net以下测试网将不再接受协议升级,不再考虑:Kovan(PoA,链 ID 42)Ropsten(PoW,链 ID 3)Rinkeby(PoA,链 ID 4)Ropsten 测试网(PoW,链 ID 3)将接收合并升级以进行测试,但随后将在 2022 年弃用。Kovan:它已被多次宣布死亡。它不会为合并和后续协议升级而升级。Kovan 上的应用程序应准备尽快迁移到 Goerli 或 Sepolia。Rinkeby:Geth 团队计划在合并后将其移除它不会为合并和后续协议升级而升级。Rinkeby 上的应用程序应准备尽快迁移到 Goerli 或 Sepolia。它不应再被视为公共以太坊测试网Ropsten:由任何开采它的人经营,它之前已经死亡、复活和弃用。它将为合并而升级,但之后立即被弃用。它很可能不会收到合并后的...

ETH2.0合并之后对于测试网的变化
创新变化以太坊核心开发人员决定未来将维护以下测试网,包括合并:Sepolia 测试网(PoW),链 ID 11155111,https: //sepolia.devGoerli 测试网(PoA,更名为 Prater 测试网),链 ID 5,https: //goerli.net以下测试网将不再接受协议升级,不再考虑:Kovan(PoA,链 ID 42)Ropsten(PoW,链 ID 3)Rinkeby(PoA,链 ID 4)Ropsten 测试网(PoW,链 ID 3)将接收合并升级以进行测试,但随后将在 2022 年弃用。Kovan:它已被多次宣布死亡。它不会为合并和后续协议升级而升级。Kovan 上的应用程序应准备尽快迁移到 Goerli 或 Sepolia。Rinkeby:Geth 团队计划在合并后将其移除它不会为合并和后续协议升级而升级。Rinkeby 上的应用程序应准备尽快迁移到 Goerli 或 Sepolia。它不应再被视为公共以太坊测试网Ropsten:由任何开采它的人经营,它之前已经死亡、复活和弃用。它将为合并而升级,但之后立即被弃用。它很可能不会收到合并后的...
定义 web3 栈
origin:Defining the web3 stack 在构建传统的 Web2 应用程序时,我经常依赖一些构建块来完成工作。API / 应用服务器(REST 或 GraphQL)身份验证层(托管或手动)数据库客户端框架、平台和库文件存储使用这些核心组件,我可以构建出我想要的大多数类型的应用程序,或者至少可以实现大部分目标。那么这在 web3 中是什么样子的呢? 事实证明,这个问题的答案并不那么简单,因为:规范在许多方面完全不同web3 工具、技术和生态系统不如 web2 成熟我也更难理解如何启动和运行以及构建 web3 应用程序,因为我处理问题的方式与我在 web2 世界中的方式相同。什么是 web3?简单来说web3可以定义为: Web3 是支持完全去中心化应用程序的协议栈。 有了这个去中心化的技术栈,我们可以开始构建去中心化的应用程序,这些应用程序具有自己的集合含义和特征。 web3 启用的一些特性是:去中心化的网络基础设施所有权(数据、内容和平台)原生数字支付自我主权身份分布式、无信任且健壮的基础架构开放、公开、可组合的后端虽然一些建立在去中心化技术栈上的应用程序将取...
定义 web3 栈
origin:Defining the web3 stack 在构建传统的 Web2 应用程序时,我经常依赖一些构建块来完成工作。API / 应用服务器(REST 或 GraphQL)身份验证层(托管或手动)数据库客户端框架、平台和库文件存储使用这些核心组件,我可以构建出我想要的大多数类型的应用程序,或者至少可以实现大部分目标。那么这在 web3 中是什么样子的呢? 事实证明,这个问题的答案并不那么简单,因为:规范在许多方面完全不同web3 工具、技术和生态系统不如 web2 成熟我也更难理解如何启动和运行以及构建 web3 应用程序,因为我处理问题的方式与我在 web2 世界中的方式相同。什么是 web3?简单来说web3可以定义为: Web3 是支持完全去中心化应用程序的协议栈。 有了这个去中心化的技术栈,我们可以开始构建去中心化的应用程序,这些应用程序具有自己的集合含义和特征。 web3 启用的一些特性是:去中心化的网络基础设施所有权(数据、内容和平台)原生数字支付自我主权身份分布式、无信任且健壮的基础架构开放、公开、可组合的后端虽然一些建立在去中心化技术栈上的应用程序将取...
How to create random NFT
I will using Chainlink VRFfunction getRandomNumber(uint256 seed) public returns (bytes32 requestId) { return requestRandomness(keyHash, fee, seed); } function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override { randomResult = randomness; } https://docs.chain.link/docs/intermediates-tutorial/
How to create random NFT
I will using Chainlink VRFfunction getRandomNumber(uint256 seed) public returns (bytes32 requestId) { return requestRandomness(keyHash, fee, seed); } function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override { randomResult = randomness; } https://docs.chain.link/docs/intermediates-tutorial/