本指南将带您通过使用 SDK 部署合约,涵盖加载合约工件、初始化合约工厂和部署合约的过程。
在 Sway 中编写合约并使用 forc build
进行编译后(了解更多 关于如何使用 Sway),您将获得两个重要的工件:编译后的二进制文件和 JSON ABI 文件。这些文件是使用 SDK 部署合约所必需的。
在部署合约之前,通过导入所需的 SDK 组件并初始化钱包和提供程序来设置必要的环境。
const PRIVATE_KEY = "..."
const provider = await Provider.create(FUEL_NETWORK_URL);
const wallet = Wallet.fromPrivateKey(PRIVATE_KEY, provider);
将从 Sway 源生成的合约字节码和 JSON ABI 加载到 SDK 中。
const contractsDir = join(__dirname, '../path/to/contracts/dir')
const contractName = "contract-name"
const byteCodePath = join(projectsPath, `${contractName}/out/release/${contractName}.bin`);
const byteCode = readFileSync(byteCodePath);
const abiJsonPath = join(projectsPath, `${contractName}/out/release/${contractName}-abi.json`);
const abi = JSON.parse(readFileSync(abiJsonPath, 'utf8'));
使用合约字节码、ABI 和钱包初始化 ContractFactory
。部署合约并使用其方法。
const factory = new ContractFactory(byteCode, abi, wallet);
const contract = await factory.deployContract();
现在合约已部署,您可以与其进行交互。在接下来的步骤中,您将学习如何执行合约调用。
const { value } = await contract.functions.echo_u8(15).simulate();
expect(value).toBe(15);
要了解更全面的 TypeScript 支持的 Fuel 使用,请学习如何从 ABI 生成类型 。