如果您想在部署合约时执行特定的初始化操作,可以在合约中专门实现一个方法来实现初始化逻辑,并且在部署合约时显式地调用该合约方法。智能合约平台本身在部署合约时不会执行默认初始化。
该方法的使用示例如下:
#include<mychainlib/contract.h>
using namespace mychain;
class DemoContract : public Contract {
public:
INTERFACE void DemoInit(int32_t a, std::string b) {
//do something...
}
};
INTERFACE_EXPORT(DemoContract,(DemoInit))
在部署该合约时,可以通过SDK指定DemoInit
方法作为初始化方法并指定参数a和b的值。DemoInit
方法也是普通的合约接口,您可以进行调用。
如果部署时
DemoInit
执行出现了异常,那么交易回执的内容是异常信息。如果部署时
DemoInit
执行成功,那么交易回执的内容是该合约字节码。所以请不要定义DemoInit
的返回值,因为你无法获取到返回值。
注意:当您每次发起交易调用合约方法时都会构造一个新的合约实例,进而调用该合约的构造函数。因此不要把部署时的初始化操作实现在合约构造函数中,否则初始化操作会被重复执行。
文档内容是否对您有帮助?