Skip to content
William Kennedy edited this page Sep 23, 2022 · 4 revisions

Description

The smart contract provides a set of three smart contracts to teach how to write, deploy, test, and debug smart contracts written in Solidity using the Go programming language.

Features

This project contains the following features:

  • Writing and deploying a simple smart contract to learn the basics.
  • Writing a more complex smart contract to learn more of the language.
  • Writing a proxy based smart contract to learn how to handle code changes.
  • Writing a contract that can verify Ethereum digital signatures.
  • Learn the cost of API design and what you need to think about when building dApps.
  • Learn idioms and code style for the Solidity programming language.
  • Running a local version of Ethereum for development.
  • Deploying and executing smart contracts on a TestNet.

Contracts

The following contracts will be taught.

  • Basic : This implements a contract that support the writing and reading of mapped data.
  • Simplecoin : This implements a contract that is more complex and showcases more of the Solidity language.
  • Bank : This implements a contract that is used today and shows how to implement the proxy pattern.
  • Signature/Verify : This implements a contract that can verify an Ethereum digital signature.

Advanced Material

Here is more advanced material about blockchain and smart contracts.

Ultimate Go: Liar's Dice
If you are looking for more advanced and practical material, this project implements a game of Liar's Dice where a crypto wallet is used for authentication and a smart contract is used to maintain the bank. Once a player is authenticated, they bet money for each game played and that money comes from their crypto wallet.

Ultimate Go: Advanced Engineering
This project implements a semantically correct blockchain in Go. The implementation of the Ardan blockchain takes inspiration from both Bitcoin and Ethereum. This does not incorporate any smart contract development, but is good for advanced learning.