QANplatform
qanplatform.comIntro to QANplatformTechnology FeaturesQANX TokenDev Docs
  • qanplatform.com
  • Welcome
  • Community
    • Social media
    • Newsletter
  • TECHNOLOGY
    • 🟢Intro to QANplatform
    • Technology Features
      • Hybrid blockchain
      • Multi-language Smart Contracts | Hyperpolyglot
      • Ethereum EVM Compatibility
      • Integrations
      • Proof-of-Randomness (PoR) consensus algorithm
      • Transaction per second (TPS)
      • Developer Royalty Fees
      • Mobile Phone Validation
      • Low-cost fixed transaction fees
      • Quantum-resistant Security
    • Use Cases
    • Blockchain 101
      • Blockchain Basics
      • Crypto Wallets
      • Coin and Token Types
      • Blockchain Transactions
  • QANX Token
    • What is QANX?
    • How to Buy QANX?
      • Buy QANX on PancakeSwap
      • Buy QANX on Uniswap
      • Buy QANX on Gate.io
      • Buy QANX on BitMart
      • Buy QANX on BingX
    • How to Store QANX
      • Store QANX in MetaMask
        • How to add QANX token to MetaMask
      • Store QANX in Trust Wallet
        • How to add QANX token to Trust Wallet
      • Store QANX in MEW
        • How to add QANX token to MEW
      • Other wallets
  • DEVELOPERS
    • QAN Private Blockchain
    • QAN TestNet
    • [QVM] Multi-language smart contracts
      • Generic workflow
        • Common API
        • Installing qvmctl
        • Setting up your workspace
        • Writing a smart contract
        • Compiling a smart contract
        • Deploying a smart contract
        • Calling a smart contract function
        • Reading smart contract storage
      • DOCs for supported languages
        • JavaScript (JS) smart contract
          • Writing a smart contract in JavaScript (JS)
          • Compiling a smart contract in JavaScript (JS)
        • Java smart contract
          • Writing a smart contract in Java
          • Compiling a smart contract in Java
        • Python smart contract
          • Writing a smart contract in Python
          • Compiling a smart contract in Python
        • TypeScript (TS) smart contract
          • Writing a smart contract in TypeScript (TS)
          • Compiling a smart contract in TypeScript (TS)
        • C# (C-Sharp) smart contract
          • Writing a smart contract in C# (C-Sharp)
          • Compiling a smart contract in C# (C-Sharp)
        • C++ smart contract
          • Writing a smart contract in C++
          • Compiling a smart contract in C++
        • C smart contract
          • Writing a smart contract in C
          • Compiling a smart contract in C
        • Golang (Go) smart contract
          • Writing a smart contract in Golang (Go)
          • Compiling a smart contract in Golang (Go)
        • Rust smart contract
          • Writing a smart contract in Rust
          • Compiling a smart contract in Rust
        • Kotlin smart contract
          • Writing a smart contract in Kotlin
          • Compiling a smart contract in Kotlin
      • [QVM] Versions & Changelog
        • V0.0.1
        • V0.0.2
    • Smart Contract Developers
    • Validators
    • Node Providers
  • ABOUT US
    • Company
    • Roadmap
    • Press kit & Media assets
    • Media mentions
    • Blog
  • Papers
    • White Paper
    • Pitch Deck
    • Onepager
    • Ebooks
      • Quantum-computing and Blockchain: The Definitive Guide
      • Blockchain's Energy Consumption: The Definitive Guide
      • Blockchain's Transaction Speed: The Definitive Guide
  • Audits
    • QANX Bridge Audit
    • QANX Token Audit
    • QAN TestNet Audit
  • Disclaimers
    • Disclaimer
      • Validation
      • Privacy Policy
      • Cookie Policy
Powered by GitBook
On this page
  • Verifying the compiled binary in your workspace
  • Run the deploy command of qvmctl using docker
  • What happens under the hood?
  • Upload
  • Download
  1. DEVELOPERS
  2. [QVM] Multi-language smart contracts
  3. Generic workflow

Deploying a smart contract

PreviousCompiling a smart contractNextCalling a smart contract function

Last updated 2 years ago

Deploying a contract is done as follows:

Verifying the compiled binary in your workspace

This simply means verifying that the binary file you have compiled with static linking in the step which is exists in your current workspace folder. After you have successfully executed the compilation, the resulting binary should be in your workspace already under the name contract. To verify just execute this command:

ls -al contract

If everything went well you should see similar output:

-rwxr-xr-x 1 user group 1204224 Jul 25 02:14 contract

Run the deploy command of qvmctl using docker

docker run --rm -v $(pwd):/ws qanplatform/qvmctl deploy --privkey privkey.txt contract

What happens under the hood?

Upload

  • Deployment fees are estimated based on your contract size

  • Balance check is performed whether your wallet address has enough funds to cover the fee

  • Your contract binary is pinned to IPFS

  • A checksum of the binary's integrity is generated

  • The above checksum is signed with your private key

  • A call is made to the QVM Repository contract with your IPFS CID + the signature

  • Fees are either paid during this call or the whole call fails

Download

  • The QVM Repository contract emits a Deployment event upon successful deployment

  • QVM Executor nodes will download the binary based on the IPFS CID

  • They will cryptographically prove to the QVM Repository that the contract has been downloaded indeed

  • The QVM Repository contract verifies the submitted cryptographic proof to ensure Executors have the binary

  • If above verification verification was successful then the contract is Registered and is now callable

specific for your language