A light template, which is intended to get a Ethereum Smart Contracts Developer quickly started into developing Bug-free Smart Contracts.
- You can clone it locally to see how this works using
git clone https://github.com/zemse/smart-solidity-template.git
. cd smart-solidity-template
.npm i
. This might take a minute or two and setup is done you can start working.- You can go through the example contract file in
contracts/SimpleStorage.sol
. - You can do
npm run test
, this will run a script to check if the contract works as intended. - Now you try making a change in
SimpleStorage.sol
file, then donode compile.js && npm run test
. This will compile the modified contract, and display errors/warnings. If no error was found, it will run tests and now you can see what is working and what isn't by looking at the tests. - You can deploy the contract on test networks like
rinkeby
orkovan
using thedeploy.js
script. Donode deploy.js deployall <network-name> <private-key>
. For example,node deploy.js deployall rinkeby 0xa6779f54dc1e9959b81f448769450b97a9fcb2b41c53d4b2ab50e5055a170ce7
. Please pay attention that if there are insufficient funds onnetwork
in wallet address associated with theprivate key
, it will give an error. You can get funds by google searching about faucets, for e.g.rinkeby faucet
.
- Start a fresh solidity project using this template through https://github.com/zemse/smart-solidity-template/generate.
- Clone your project locally to work on it.
- Delete
SimpleStorage.sol
fromcontracts
folder. Create your smart contract file with it's appropriate name, e.g.Lottery.sol
. Please make sure that you are using the latest version of solidity in your smart contract in the first linepragma solidity 0.5.11
. - In the project directory, do
node compile.js
. This will compile your contract, show errors or warnings if any and will place the json files into a build folder. - In the
test
folder, you can rename the existingSimpleStorage.test.js
file by your contract name, e.g.Lottery.test.js
and refer to the contents for understanding to write tests. Run the tests by doingnpm run test
. - While developing smart contract, it's a good practice to write tests as you implement any new contract code.
- If you make a change in smart contract code, and want to see if nothing breaks old functionality, you can hit a one liner
node compile.js && npm run test
, this will simultaneously compile and run your tests.
- You can test deployment on testnets like
rinkeby
orkovan
. For deployment on mainnet usehomestead
, the process would be same as testnet, but deployment time might vary on different networks due to crowdedness. - To deploy all compiled contracts, do
node deploy.js deployall rinkeby 0xa6779f54dc1e9959b81f448769450b97a9fcb2b41c53d4b2ab50e5055a170ce7
. - To deploy a specific contract, write it's JSON file name instead of deployall flag, e.g.
node deploy.js SimpleStorage_0.json rinkeby 0xa6779f54dc1e9959b81f448769450b97a9fcb2b41c53d4b2ab50e5055a170ce7
. - If the contract requires constructor arguments, you can pass it by adding them after the command, e.g.
node deploy.js SimpleStorage_0.json rinkeby 0xa6779f54dc1e9959b81f448769450b97a9fcb2b41c53d4b2ab50e5055a170ce7 "hello world"
.
- You can customise to a specific
solc
version by doingnpm i solc@0.5.10
, but it's not recommended. Note:solc@0.4.*
will not work with this template, because it has a different compile.js structure. It is recommended that you upgrade your smart contract code to be able to be compiled by asolc@0.5.*
compiler. You can check out breaking changes in0.5.*
at https://solidity.readthedocs.io/en/v0.5.0/050-breaking-changes.html and upgrade your smart contracts accordingly. - This project uses
ethers.js
library in the tests. You can find docs at https://docs.ethers.io/ethers.js/html/. If you wish to useweb3.js
instead, you can do it by uninstallingethers.js
usingnpm uninstall ethers
, then you can installweb3.js
usingnpm i web3
. Then you will have to change the tests files.