Skip to main content

5. Deploy to Futurenet

If you have Docker installed, you can run a local node with the Stellar Quickstart Docker image that joins the Futurenet network, and then use that local node to deploy.

info

It's also possible to run a contract in the local sandbox environment without a network using just the soroban-cli. See Run on Sandbox for more details.

To run a local node for the Futurenet network with the Stellar Quickstart Docker image, run the following command.

docker run --rm -it \
-p 8000:8000 \
--name stellar \
stellar/quickstart:soroban-dev \
--futurenet \
--enable-soroban-rpc

Once the image is started you can check its status by querying the Horizon API:

curl http://localhost:8000

It takes sometime to join a remote network. Monitor the output of that endpoint until you see the core_latest_ledger become a number above zero.

Generate a key by going to the Stellar Laboratory. Make note of both the G... and S... keys. The G... key is the public key and will also be the account ID. The S... key is the secret key and is that you use to control the account.

tip

It's a good practice to never use the same keys for testing and development that you use for the public Stellar network. Generate new keys for testing and development and avoid ever using them for other purposes.

Create an account on the Futurenet network by making a request to the Friendbot. Specify as the addr the G... key of your account.

curl "https://friendbot-futurenet.stellar.org/?addr=G..."

Once you have an account on the network, we'll use the code we wrote in Write a Contract and the resulting .wasm file we built in Build as our contract to deploy. Run the following commands to deploy the contract to the network. Use the S... key as the secret key.

soroban contract deploy \
--wasm target/wasm32-unknown-unknown/release/[project-name].wasm \
--secret-key S... \
--rpc-url http://localhost:8000/soroban/rpc \
--network-passphrase 'Test SDF Future Network ; October 2022'
tip

It's good practice to avoid entering secret keys on the command line. You can also specify the secret key by setting the environment variable SOROBAN_SECRET_KEY. The soroban-cli is still in development and in the future there will be other secure ways to provide a secret key, such as via hardware keys.

A contract ID will be outputted.

cd4dae2c409c433b1e1d83994a20214d3e5f60bdd3a817978d8aa7c797864313

Using the contract ID that was outputted, use the soroban-cli to invoke the hello function with a single argument friend.

soroban contract invoke \
--id cd4dae2c409c433b1e1d83994a20214d3e5f60bdd3a817978d8aa7c797864313 \
--secret-key S... \
--rpc-url http://localhost:8000/soroban/rpc \
--network-passphrase 'Test SDF Future Network ; October 2022' \
--fn hello \
-- \
--to friend

The following output should appear.

["Hello", "friend"]