• Incremental Delivery: When working with smart contracts, it’s essential to adopt incremental delivery approaches. This means adding features by feature, rather than trying to deploy a massive contract at once.
  • Versioning and Upgrades: To facilitate upgrades, we must introduce versioning concepts and carefully plan how to integrate new code into the existing contract. This ensures seamless deployment without disrupting the network.
  • Separate Code from Data: Smart contracts should keep execution logic (code) separate from data storage. This allows for easier maintenance and updates.
  • Consensus Algorithm Selection: When choosing a consensus algorithm, consider the specific needs of your use case. For our example, we opted for Proof of Authority, which is well-suited for private networks with known stakeholders.
  • Immutable by Design: Embrace the immutability of blockchain technology, but be judicious in applying it to each use case. Not every problem requires a smart contract solution.
  • Business Collaboration: Collaborate closely with stakeholders to understand use cases and determine what should be stored on the ledger. Weigh the trade-offs carefully.
  • Prepare for Pivots: Be prepared to iterate and pivot as needed, acknowledging that complex systems often require multiple attempts to achieve success.