Prerequisites
If you’re just getting started or looking for a less technical introduction, we recommend Ethereum’s introduction to smart contracts. Make sure you’ve read up on accounts, transactions and the Parallax Virtual Machine before jumping into the world of smart contracts.A digital vending machine
Perhaps the best metaphor for a smart contract is a vending machine, as described by Nick Szabo. With the right inputs, a certain output is guaranteed. To get a snack from a vending machine:Permissionless
Anyone can write a smart contract and deploy it to the network. You just need to learn how to code in a smart contract language, and have enough Laxes to deploy your contract. Deploying a smart contract is technically a transaction, so you need to pay gas in the same way you need to pay gas for a simple LAX transfer. However, gas costs for contract deployment are far higher. Parallax has developer-friendly languages for writing smart contracts:- Solidity
- Vyper
Composability
Smart contracts are public on the Parallax blockchain and can be thought of as open APIs. This means you can call other smart contracts in your own smart contract to greatly extend what’s possible. Contracts can even deploy other contracts. Learn more about smart contract composability.Limitations
Smart contracts alone cannot get information about “real-world” events because they can’t retrieve data from off-chain sources. This means they can’t respond to events in the real world. This is by design. Relying on external information could jeopardize consensus, which is important for security and decentralization. However, it is important for blockchain applications to be able to use off-chain data. The solution is oracles, which are tools that ingest off-chain data and make it available to smart contracts. Another limitation of smart contracts is the maximum contract size. A smart contract can be a maximum of 24KB or it will run out of gas. This can be circumnavigated by using The Diamond Pattern↗.Multisig contracts
Multisig (multiple-signature) contracts are smart contract accounts that require multiple valid signatures to execute a transaction. This is very useful for avoiding single points of failure for contracts holding substantial amounts of Laxes or other tokens. Multisigs also divide responsibility for contract execution and key management between multiple parties and prevent the loss of a single private key leading to irreversible loss of funds. For these reasons, multisig contracts can be used for simple DAO governance. Multisigs require N signatures out of M possible acceptable signatures (where N ≤ M, and M > 1) in order to execute.N = 3, M = 5
and N = 4, M = 7
are commonly used. A 4/7 multisig requires four out of seven possible valid signatures. This means the funds are still retrievable even if three signatures are lost. In this case, it also means that the majority of key-holders must agree and sign in order for the contract to execute.