Skip to content

Latest commit

 

History

History
86 lines (65 loc) · 2.91 KB

File metadata and controls

86 lines (65 loc) · 2.91 KB
sidebar_position title description pagination_next
50
5. Move from Testnet to Mainnet
Move from Testnet to Mainnet
build/apps/dapp-frontend

import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; import { getPlatform } from "@site/src/helpers/getPlatform";

Moving a Contract from Testnet to Mainnet

This guide outlines the process for securely deploying Stellar smart contracts from Testnet to Mainnet using GitHub Actions and Github Attestation for source code validation.

Steps to Deploy

1. Set Up Contract Source Validation

  • Configure your GitHub repository for automated source validation.
  • Create a workflow file .github/workflows/release.yml in your repository.

Example workflow:

name: Build and Release # arbitrary name
on:
  push:
    tags:
      - "v*" # triggered whenever a new tag (prefixed with "v") is pushed

permissions: # required permissions
  id-token: write
  contents: write
  attestations: write

jobs:
  release-contract-a:
    uses: stellar-expert/soroban-build-workflow/.github/workflows/release.yml@main
    with:
      release_name: ${{ github.ref_name }} # git tag as unique release name
      release_description: "Contract release" # text to attach to the release
      relative_path: '["src/my-awesome-contract"]' # relative contract path
      package: "my-awesome-contract" # package name to build
      make_target: "build-dependencies" # make target to invoke
    secrets: # authentication tokens will be automatically created by GitHub
      release_token: ${{ secrets.GITHUB_TOKEN }} # don't modify this line

2. Compile and Validate Contract

  • Trigger the workflow by pushing a new tag (e.g., v1.0).
  • The workflow will:
    • Compile the contract to Wasm.
    • Publish a GitHub release with build artifacts.
    • Generate a GitHub attestation, linking the Wasm to the source code.
    stellar contract build \
        --meta name="Contract Name"  \
        --meta description="Descripton of the contract"
        --meta source="https://api.github.com/repos/<user_name>/<repo_name>"

3. Deploy to Mainnet

  • Retrieve the compiled Wasm from the GitHub release.
  • Deploy the Wasm to the Stellar Mainnet using the Stellar CLI:
  stellar contract deploy --source-acount <source-account> --wasm <path-to-wasm> --network mainnet

4. Verify Contract Authenticity

Use the GitHub API to confirm the Wasm's source: Retrieve attestation via: https://api.github.com/repos/<user_name>/<repo_name>/attestations/sha256:<wasm_hash> Ensure the source code and commit hash match the deployed contract.

Up next

Ready to turn these deployed contracts into a simple web application? Head over to the Build a Dapp Frontend section.