网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

如何让Solidity合约像REST API一样调用、修改、读取?

GG网络技术分享 2026-04-16 01:45 0


复制

《纸上谈兵·solidity》第 2 课:调用、修改、读取,Solidity 合约不是 REST API

施行:

# 配置私钥$ export PRIVATEKEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80# 查询私钥对应账户的余额$ cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --rpc-url http://127.0.0.1:8545 --er10000.000000000000000000# 施行脚本$ forge script script/ --rpc-url http://127.0.0.1:8545 -vv# 查询余额, 余额并没有减少$ cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --rpc-url http://127.0.xmlhttp://127.xmlhttp://127.xmlhttp://127.

代码语言:txt

修改数据

代码:https://github.com/xielehe/solidity-example/blob/main/calling-contract.sol,视频播放量 115xmlhttp://127.,弹幕量 3、点赞数 1xmlhttp://127.,投硬币枚数 6、收藏人数 1xmlhttp://127.,转发人数 1,视频作者 allthatblock,作者简介 The ship is sinking,相关视频:solidity教程修改器,solidity教程 delegatecall,s 行吧... olidity教程验证签名,solidity教程 immutable关键字,solidity教程继承,solidity教程事件,solidity教程Hash,使用solidity从Lxmlhttp://1发送er到Lxmlhttp://xxx.,solidity教程 Mapping,solidity教程 payable solidity教程合约调用合约 xmlhttp://xxx.. xmlhttp://xxx.. xmlhttp://xxx... 未经作者授权,禁止转载 代码: allth...

--private-key

举个例子

很多 web3项目依赖于调用其他合约,比如收益农场。这一讲,我们介绍如何在已知合约代码或接口和地址情况下调用目标合约的函数。目标合约我们先写一个简单的合约 OrContract来调用。 翻旧账。 这个合约包含一个状态变量 x, 一个事件 Log在收到 ETH时触发,三个函数setX: external payable 函数,可以设置 x的值,并向合约发送 ETH。

getX: 读取 x的值。 调用 OrContract合约 我们利用合约的地址和合约代码或接口来创建合约的引用:Name,其中Name是合约名,Address是合约地址。

--private-key 

前言

哎呦喂,这问题问得…有点意思啊!Solidity?REST API?这两个东西能扯上关系吗?当然能!虽然它们不是同一领域的概念,但我们可以尝试用类似的方式去思考和实现与智能合同的交互。 这篇文档我保证写得乱七八糟、 天马行空、逻辑混乱…如果你想找一篇结构清晰、条理分明的文章,那你找错地方了!准备好迎接一场思维风暴吧!

核心概念:智能合同与REST API 的“伪”类比

什么是REST API?

智能合同中的状态和函数

  • 状态变量:就像数据库里的数据一样
  • 函数:就像API接口一样
  • 但是…智能合同的状态是存储在区块链上的!这很重要!

理解 'msg.sender'

'msg.sender' 是什么呢? 嗯...它就像是你给餐厅服务员点餐的时候告诉他你是谁一样! 在Solidity中,'msg.sender' 表示发起当前函数调用的账户地址。它可以用来进行权限控制等操作。. 想象一下你在一个俱乐部里要进VIP包间,'msg.sender' 就相当于你的会员卡号! 如果你不是会员或者会员等级不够高,那就进不去啦!. 所以,'msg.sender' 在智能合同中是一个非常重要的变量! 一定要好好理解哦~.. 不然的话可能会出现平安漏洞哦~.. 不过不用担心太复杂啦! 多练习几次就熟悉了!. 加油!. 相信你一定可以学会的!. 我会一直支持你的!. 加油加油!. 冲鸭!. 💪💪💪

读取数据

使用 `view` 和 `pure` 函数

function getCount public view returns  { return count; }
图片未找到

`cast call` 命令

$ cast call "getCount" --rpc url http ://localhost : pxpxpxpxpxpxpxpxpxpxpxpxxpoxxxxxoxxoxxxxxoxxxxxoxxxxxoxxxxxxxxxxooxxxxxxxxxxxxxxooxooxxxxxxooxxooxooxooxoopxpppooooooooopoopooopppppppppppppppoooooooooooooooopopppopoppoopoopppooppopopoopoopooopoooopoopoooopopppppopeopepeopeopeoeopeoeopeoepeopeepeepoopopoppppppppp

模拟施行 vs 上链施行

图片未找到

发送交易的重要性

产品名称 价格 功能
Metamask 免费 钱包功能
Trust Wallet 免费 钱包功能
Ledger Nano S 美元 $ xxx 硬件钱包 , 平安性高

`forge script` 命令与 `--broadcast` 参数

不加 `--broadcast`

加 `--broadcast` 和 `--private key`

权限控制

  • 排名第一: Metamask
  • 排名第二: Trust Wallet
  • 排名第三: Ledger Nano S


提交需求或反馈

Demand feedback