Skip to content

使用 CLI 部署

deploy 命令允许你将智能合约的实例部署到区块链。你可以在 sCrypt 项目的根目录中简单地运行以下命令:

sh
npx scrypt-cli deploy

或者

sh
npx scrypt-cli d

默认情况下,CLI 工具将运行位于项目根目录中的名为 deploy.ts 的脚本。你也可以使用 --file-f 选项指定不同的部署脚本。

sh
npx scrypt-cli d -f myCustomDeploy.ts

如果项目是使用 sCrypt CLI 创建的,它将已经包含一个 deploy.ts 文件(除非是项目)。如果没有,deploy 命令将生成一个示例 deploy.ts 文件。

以下是一个这样的部署文件示例:

ts
import { Demoproject } from './src/contracts/demoproject'
import { bsv, TestWallet, DefaultProvider, sha256, toByteString, } from 'scrypt-ts'

import * as dotenv from 'dotenv'

// 加载 .env 文件
dotenv.config()

// 从 .env 文件中读取私钥。
// 默认情况下,.env 文件中的私钥用于比特币测试网。
// 参见 https://scrypt.io/docs/bitcoin-basics/bsv/#private-keys
const privateKey = bsv.PrivateKey.fromWIF(process.env.PRIVATE_KEY)

// 准备签名者。
// 参见 https://scrypt.io/docs/how-to-deploy-and-call-a-contract/#prepare-a-signer-and-provider
const signer = new TestWallet(privateKey, new DefaultProvider())

async function main() {
    // 编译智能合约。
    await Demoproject.loadArtifact()

    // 智能合约中锁定的聪的数量:
    const amount = 100

    // 实例化智能合约并传递构造函数参数。
    const instance = new Demoproject(
        sha256(toByteString('hello world', true))
    )

    // 连接到签名者。
    await instance.connect(signer)

    // 合约部署。
    const deployTx = await instance.deploy(amount)
    console.log('Demoproject 合约已部署: ', deployTx.id)
}

main()

成功执行后,你应该会看到如下输出:

text
Demoproject 合约已部署: 15b8055cfaf9554035f8d3b866f038a04e40b45e28109f1becfe4d0af9f743cd

你可以使用 WhatsOnChain 区块浏览器 查看已部署的智能合约。在我们的示例中,第一个输出包含编译后的智能合约代码。它使用脚本的哈希(双 SHA-256)进行索引:eb2f10b8f1bd12527f07a5d05b40f06137cbebe4e9ecfb6a4e0fd8a3437e1def