首页
学习
活动
专区
圈层
工具
发布

《纸上谈兵·solidity》第 48 课:DeFi 实战(12) -- 前端 DApp 集成与用户交互(React + ethers.js 实战)

配置│ │ ├── format.js # 格式化函数(代币、地址、错误)│ │ └── governance.js # 治理工具(calldata...${address.slice(-4)}`;}/** * 格式化错误消息(用户友好) */export function formatError(error) { if (!...更多错误映射 return message;}要点:统一的代币格式化(避免精度问题)用户友好的错误提示地址格式化(缩短显示)5.8 src/utils/governance.js(治理工具)import...中取消了交易"余额不足":账户 ETH 余额不足以支付 gas"许可不足":需要先调用 approve"Nonce 错误":交易 nonce 冲突,刷新重试9、生产部署与运维要点RPC / Rate...乐观 UI:在 tx pending 时展示乐观变化(例如 "预计存款 +100"),但后台需在 tx confirmed 后矫正。

33321

福利|评价超高的《精通以太坊》丛书免费送,还包邮!手慢无

jsonrpc:定义JSON RPC版本。 result:方法返回值。error调用时错误,无错误时返回null,有错误时则返回一个错误对象。...id:调用标识符,与调用方传入的标识一致,当请求中的id检查发生错误时(转换错误/无效请求),则必须返回null。...如何与以太坊节点进行通信 以太坊使用JSON RPC 2.0规范来和节点进行通信,我们来看看这个步骤是怎样实现的: 首先要求我们在启动节点时,加入--rpc选项,如下所示。 ?...我们可以在Compile的tab下点击Details,在出现的页面中拷贝合约的ABI(点击“复制”小图标),如下图所示。 ? 将其复制到代码中,代码如下所示。 ? ?...现在领养一只宠物看看,当我们点击Adopt时,MetaMask会提示确认交易,如下图所示。 ? 点击SUBMIT确认后,就可以看到我们已成功领养了一只宠物。

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用 Dapptools | 类似 MakerDAO 使用的代码

    tokenCounter = tokenCounter + 1; return newItemId; } } 如果你现在尝试dapp build,你会得到一个很大的错误...在这个配置文件中,我们告诉它读取输出remappings.txt并将其用作“重新映射”。重新映射是我们在 solidity 中告诉导入的文件应该从哪里导入的方法。...你可以在这里[29]看到关于设置 metamask 的更深入的说明。但理想情况下,你得到一个 metamask,然后从 Chainlink Faucets[30]水龙头得到一些测试网 ETH。...你的 metamask 应该看起来像这样: Metamask[31] 拥有钱包后,将该钱包的地址设置为ETH_FROM环境变量。...当你运行 make 时,将更新并下载.gitmodules和lib中的文件。 添加一个LICENSE。如果你不知道怎么做,可以从我们的仓库[36]中复制一个! 终于大功告成!

    1.2K30

    记一次RPC打满导致HDFS两个Active Namenode的问题

    >ha.health-monitor.rpc-timeout.ms,引发错误故障转移RPC响应延迟过大:NameNode负载过高,处理RPC请求时间超过心跳间隔,导致ZKFC认为节点"死亡"大规模元数据操作...,无法处理并发RPC请求(包括心跳和状态转换)线程池被占满时,健康检测请求被阻塞,引发错误故障转移3.脑裂场景中的典型RPC异常表现ZKFC日志中出现大量:展开代码语言:TXTAI代码解释org.apache.hadoop.ipc.RemoteException...:Connectionresetbypeer或CallFrom...failedonconnectionexception,表明RPC连接不稳定NameNode日志中出现:展开代码语言:TXTAI代码解释...NameNode格式化后未同步更新DataNode的clusterID,导致元数据冲突(4)故障转移与隔离(fencing)机制失效fencing配置缺失/错误:未配置dfs.ha.fencing.methods...:使用NFS等传统存储时,缺乏有效的fencing机制,导致双节点同时写入QJM的epoch更新失败,使旧Active节点仍能写入编辑日志(5)配置错误与管理操作不当HA配置冲突:两个NameNode的

    13410

    如何创建NFT并OpenSea上展示《alchemy How to Develop an NFT Smart Contract》译

    你需要创建一个免费的 Alchemy 账户(主要是提供了RPC)。...Provider 到 Metamask ,如果你没有安装 metamask,请确保安装,若没有 wallet 请先按照以下教程添加一个 wallet 到你的浏览器中,点击“add network”:...你将会跳转到以下页面,你需要填写 goerli 网络和 RPC URL 信息: 添加以下信息到表单中: Network name: Alchemy Goerli 网络名 New RPC...如果一切工作都很顺利,那么在 10秒之后,你可以看到这个合约列表下将会出现已经部署的合约: 1.8 什么是 NFT 元数据 为了让合约返回一个 OpenSea 的元数据,我们需要设置一个 URI...1.8 怎么样去格式化你的 NFT 元数据 根据 OpenSea 的文档,一个 NFT 的元数据应该是存储在 json 文件中,这个文件接口如下: { "description": "YOUR DESCRIPTION

    1.6K60

    【葵花宝典】区块链技术面试必考题01 区块链面试真经

    问:启动Geth客户端会在屏幕上打印大量的输出信息,如果不想被这些繁杂信息干扰该怎么办? 答:使用“--verbosity”命令调低输出信息复杂度的值(默认值为3)。...为了避免出现生成函数ID时的常见错误,在此过程中必须使用规范的数据类型,就比如说使用标准的256位无符号整型(uint256)而不是无符号整型(uint)。...问:什么是MetaMask? 答:Metamask是一款插件类型的以太坊钱包,可以帮助用户在浏览器中与以太坊网络进行交互。 image 问:Metamask使用什么节点?...不要小看了这一步,因为它可以避免出现在使用其他版本编译器进行编译时引入的不兼容错误。 问:一个智能合约包含什么? 答:智能合约主要由存储变量,函数和事件组成。 问:智能合约中都有哪些类型的函数?...问:如果我将多个智能合约定义放入单个Solidity文件中,会出现什么样的错误? 答:将多个智能合约定义放入单个Solidity文件中是完全可行的。 问:两个智能合约可以通过哪些方式进行交互?

    2.3K40

    使用React创建一个web3的前端

    简单解释这个函数的作用: 它检查 Metamask 是否被安装,并将结果输出到控制台。 它试图为已连接的账户请求 Metamask。...如果ethereum对象存在,它将 Metamask 设置为 RPC 提供者。这意味着,将使用 Metamask 钱包向矿工发出请求。 为了发出交易请求,用户需要使用他们的私钥签署交易。...调用 mintNFT 函数并请求 Metamask 发送 0.01 ETH(这是我们为 NFT 设定的价格)。 等待交易被处理,一旦处理完毕,将交易哈希值输出到控制台。...Metamask 将提示你支付 0.01 ETH + gas。该交易将需要大约 15-20 秒的时间来处理。一旦完成,交易可以通过 Metamask 的弹出窗口和控制台的输出来确认。...你能不能实现在用户没有连接到 Rinkeby 时提醒他(就像 OpenSea 那样)?另外,确保用户在连接到错误的网络时不能看到Mint NFT按钮。

    2.8K30

    年薪百万的技术面试都问啥?来收下这份必考题葵花宝典吧|套路

    问:启动Geth客户端会在屏幕上打印大量的输出信息,如果不想被这些繁杂信息干扰该怎么办? 答:使用“--verbosity”命令调低输出信息复杂度的值(默认值为3)。...为了避免出现生成函数ID时的常见错误,在此过程中必须使用规范的数据类型,就比如说使用标准的256位无符号整型(uint256)而不是无符号整型(uint)。...问:什么是MetaMask? 答:Metamask是一款插件类型的以太坊钱包,可以帮助用户在浏览器中与以太坊网络进行交互。 问:Metamask使用什么节点? 答:它使用infura.io。...不要小看了这一步,因为它可以避免出现在使用其他版本编译器进行编译时引入的不兼容错误。 问:一个智能合约包含什么? 答:智能合约主要由存储变量,函数和事件组成。 问:智能合约中都有哪些类型的函数?...问:如果我将多个智能合约定义放入单个Solidity文件中,会出现什么样的错误? 答:将多个智能合约定义放入单个Solidity文件中是完全可行的。 问:两个智能合约可以通过哪些方式进行交互?

    1.4K10

    搭建以太坊智能合约测试环境

    Support/Ethereum\ Wallet/binaries/Geth/unpacked 解决了此问题再运行 Ethereum Wallet 的时候,一切都正常了: 不过正如你所见,截止本文发稿时,...Mac 系统为例: shell> geth \ --dev \ --dev.period 10 \ --datadir ~/Library/Ethereum \ --rpc...接下来让我们试着在控制台(geth attach)里执行合约看看: 此外,我们还可以给私链装一个类似 etherscan 那样的浏览器,比如 blk: image.png blk 还有一点提示,当使用 metamask...来连接私链的时候,有时候会出现连不上的情况: Error: [ethjs-rpc] rpc error with payload … Error: invalid sender 此时可以在 metamask...image.png metamask 本文简单介绍了一下如何利用  Ethereum Wallet 来部署开发环境,不过设置下来,我才发现虽然 Ethereum Wallet 是官方出品的,但是真难用,

    1.1K30

    浅析 Web3.0 DApp(去中心化应用程序)设计架构

    当我们想要与区块链上的数据和代码进行交互时,我们需要与这些节点中的一个进行交互。任何节点都可以广播在 EVM 上执行交易的请求,然后矿工将执行交易并将结果状态更改传播到网络的其余部分。...设置自己运行以太坊区块链软件的节点; 使用Infura、 Alchemy和Quicknode等第三方服务提供的节点; 借助第三方节点可能会更轻松一点,它的逻辑是这样的: 每个以太坊客户端(即提供者)都实现了 JSON-RPC...这确保了当前端应用程序想要与区块链交互时,有一组统一的方法。JSON-RPC 是一种无状态、轻量级的远程过程调用 (RPC) 协议,定义了多个数据结构及其处理规则。...通常借助 Metamask 实现; Metamask 将用户的私钥存储在浏览器中,每当前端需要用户签署交易时,它就会调用 Metamask。...我是掘金安东尼,输出暴露输入,技术洞见生活。

    1.5K30

    NFT新手教程: 如何编写和部署NFT(第1部分)

    你的应用应该出现在下面的表格中。 第 3 步:创建一个以太坊账户(地址) {#create-eth-address} 我们需要一个以太坊账户来发送和接收交易。...npm init 初始化项目时,需要进行一些设置,以回答问题的方式设置,如何回答安装问题并不重要,以下是我们的做法,以供参考: package name: (my-nft) version:...当使用 hardhat-ethers 插件时,ContractFactory 和合约实例默认连接到第一个签名者。...使用Alchemy的资源管理器仪表板查看 "引擎 "下的调用 在这里,你会看到 Hardhat/Ethers 在我们调用.deploy()函数时,在交易背后为我们发起的的少量 JSON-RPC 调用。...和 eth_getTransactionByHash[38],这是一个读取交易的哈希值的请求(发送交易时的一个典型模式)。

    4.6K32

    HDFS——JN扩容的正确姿势

    另一方面,最近事情相当多,回家后收拾收拾就十一二点了,也就没有再进行总结输出了。...每个RPC请求都必须有多数以上的节点成功响应,该次rpc请求才算是真的成功。...JN在收到NN的rpc请求时,会对自身情况进行判断,如果所在的持久化路径中没有保存NN集群的元数据信息(存储在VERSION文件中),则认为自身没有格式化,因此返回错误,并最终导致NN退出。...而JN保存的NN的元数据信息仅在整个集群部署时,NN通过格式化命令下发给所有JN,此后均不再进行集群信息的同步。 那是不是再次触发一次格式化就可以了呢?...但一般来说,进行升级扩容时,还是希望所有已经存储的数据保留,因此该方法是行不通的。

    67130

    Foundry教程|如何调试和部署Solidity智能合约

    uint256 var2 = 1; assertEq(var1,var2); } } 请注意,在上面的例子中,我们给函数名加上了一个前缀 test -> testWhatever(),此时出现任何...用 Slither 进行安全分析 当涉及到智能合约安全时,Slither 绝不是一个简单的解决方案,但它是有用的,并提供了一些自动检查,如检查重入错误。...vm.expectRevert(bytes calldata) external; 期待下次调用时出现错误。 vm.record() external; 记录所有存储的读和写。...这些可以用来改变测试的过程,如在这个例子中,告诉测试套件在调用时期望一个标准的算术错误。...我们也可以提供凭证(私钥)来发送一个交易,就像我们在 metamask 中签署一个交易一样。

    2.7K20
    领券