构造函数、事件、以及诡异点

文章讨论了在Starknet中,尽管Solidity合约的owner在构造函数中设置为部署者地址,但在部署Starknet合约后,owner显示为未知地址。经调查发现,原因是所有合约的部署者实际上是UniversalDeployerContract(UDC)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天继续看一下 cairo2.2的构造函数,事件

构造函数必须用 #[constructor] 修饰,每个合约只能有一个。

事件用的是 #[event]。

使用事件成本更低

事件不能从合约内部读到。

这次测试的合约有一个奇怪的点,合约只有一个owner变量,值构造函数中初始化,把调用者的地址赋给 owner, 这是一个在solidity里非常常见的操作,读出来的owner就是部署者地址。但是starknet部署后,owner被设置成一个找不到出处的地址,不知道坑在哪里。

例子:不明白读出的owner : 0x41a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf ,这个地址是哪里的,个人账户里根本没有这个,看来部署的地址不是用的列表里这些地址。

那是用的哪里的账户呢?

解答:

诡异点原因已经找到 , 原来startknet所有合约的部署者都不是账户合约,而是一个统一的部署合约 Universal Deployer Contract (UDC). 

上面read_owner读出来的合约地址就是 默认的UDC合约。

参考:

Universal Deployer Contract proposal 🪄 - SNIPs - Starknet Community Forum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值