Deploying Contracts

Icon Link部署合约

本指南将带您通过使用 SDK 部署合约,涵盖加载合约工件、初始化合约工厂和部署合约的过程。

Icon Link1. 获取合约工件

在 Sway 中编写合约并使用 forc build 进行编译后(了解更多 Icon Link关于如何使用 Sway),您将获得两个重要的工件:编译后的二进制文件和 JSON ABI 文件。这些文件是使用 SDK 部署合约所必需的。

Icon Link2. 设置 SDK 环境

在部署合约之前,通过导入所需的 SDK 组件并初始化钱包和提供程序来设置必要的环境。

const PRIVATE_KEY = "..."
 
const provider = await Provider.create(FUEL_NETWORK_URL);
 
const wallet = Wallet.fromPrivateKey(PRIVATE_KEY, provider);

Icon Link3. 加载合约工件

将从 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'));

Icon Link4. 部署合约

使用合约字节码、ABI 和钱包初始化 ContractFactory 。部署合约并使用其方法。

const factory = new ContractFactory(byteCode, abi, wallet);
 
const contract = await factory.deployContract();

Icon Link5. 执行合约调用

现在合约已部署,您可以与其进行交互。在接下来的步骤中,您将学习如何执行合约调用。

const { value } = await contract.functions.echo_u8(15).simulate();
 
expect(value).toBe(15);

要了解更全面的 TypeScript 支持的 Fuel 使用,请学习如何从 ABI 生成类型