Spaces:
Runtime error
Runtime error
sidebar_position: 3 | |
# Deploy Using CLI | |
The `deploy` command allows you to deploy an instance of a smart contract to the blockchain. You can simply run the following command in the root of an `sCrypt` project: | |
```sh | |
scrypt deploy | |
``` | |
or | |
```sh | |
scrypt d | |
``` | |
By default, the CLI tool will run a script named `deploy.ts` located in the root of the project. You can also specify a different deployment script using the `--file` or `-f` option. | |
```sh | |
scrypt d -f myCustomDeploy.ts | |
``` | |
If the project was created using sCrypt CLI, it will already have a `deploy.ts` file present (except for [library](../how-to-publish-a-contract.md) projects). If not, the `deploy` command will generate a sample `deploy.ts` file. | |
Here's an example of such a deployment file: | |
```ts | |
import { Demoproject } from './src/contracts/demoproject' | |
import { bsv, TestWallet, DefaultProvider, sha256, toByteString, } from 'scrypt-ts' | |
import * as dotenv from 'dotenv' | |
// Load the .env file | |
dotenv.config() | |
// Read the private key from the .env file. | |
// The default private key inside the .env file is meant to be used for the Bitcoin testnet. | |
// See https://scrypt.io/docs/bitcoin-basics/bsv/#private-keys | |
const privateKey = bsv.PrivateKey.fromWIF(process.env.PRIVATE_KEY) | |
// Prepare signer. | |
// See 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() { | |
// Compile the smart contract. | |
await Demoproject.compile() | |
// The amount of satoshis locked in the smart contract: | |
const amount = 100 | |
// Instantiate the smart contract and pass constructor parameters. | |
const instance = new Demoproject( | |
sha256(toByteString('hello world', true)) | |
) | |
// Connect to a signer. | |
await instance.connect(signer) | |
// Contract deployment. | |
const deployTx = await instance.deploy(amount) | |
console.log('Demoproject contract deployed: ', deployTx.id) | |
} | |
main() | |
``` | |
Upon a successful execution you should see an output like the following: | |
``` | |
Demoproject contract deployed: 15b8055cfaf9554035f8d3b866f038a04e40b45e28109f1becfe4d0af9f743cd | |
``` | |
You can take a look at the deployed smart contract using the [WhatsOnChain block explorer](https://test.whatsonchain.com/tx/15b8055cfaf9554035f8d3b866f038a04e40b45e28109f1becfe4d0af9f743cd). | |
In our example, the first output contains the compiled smart contract code. | |
It is indexed using the hash (double SHA-256) of the script: [eb2f10b8f1bd12527f07a5d05b40f06137cbebe4e9ecfb6a4e0fd8a3437e1def](https://test.whatsonchain.com/script/eb2f10b8f1bd12527f07a5d05b40f06137cbebe4e9ecfb6a4e0fd8a3437e1def) | |