In blockchain applications, it is useful to have a way to control transactions. Many blockchain implementations have achieved this through smart contracts. While we think smart contracts are pretty cool, we didn’t think they’d be applicable to ndau. We didn’t want to rely on code that could take outside variables to manipulate ndau transactions. It felt to us like it would add a level of complexity we didn’t want.
So we created a very simple way to validate transactions. This validation mechanism allows us to do things like require x of y signatures, allowing us to support multisignature (multisig). We can also use this validation mechanism to implement special cases like Blockchain Policy Council (BPC) only transactions. Our mechanism allows us to evaluate on-chain data and decide whether or not to allow a transaction.