智能合约构造函数中可以使用this吗?

智能合约的地址什么时候有效? 在构造函数中可以使用this吗?

通常的直觉是智能合约应该在构造完之后(即构造函数constructor执行完之后),其实并不是,在constructor中是可以使用this来表示当前合约的地址,因为在发起交易的时候,就已经可以确定合约的地址,参考合约地址的计算

可以使用下面的代码测试一下:

1
2
3
4
5
6
7
8
9
10
11
12

pragma solidity ^0.5.0;

contract Test {
address public thisAddress;
event LogAddr(address);

constructor() {
thisAddress = address(this);
emit LogAddr(address(this));
}
}

深入浅出区块链知识星球提供专业的区块链问答服务,如果你需要问题一直没有思路,也许可以考虑咨询下老师。

深入浅出区块链 - 打造高质量区块链技术博客,学区块链都来这里,关注知乎微博

LBC-Team wechat
欢迎订阅公众号:深入浅出区块链技术
0%