diff --git a/rfcs/rfc-006-budget-contract-language.md b/rfcs/rfc-006-budget-contract-language.md new file mode 100644 index 0000000000..8c11964d15 --- /dev/null +++ b/rfcs/rfc-006-budget-contract-language.md @@ -0,0 +1,123 @@ + +### Wallet CLI + +The general form is: +``` +$ solana-wallet [common-options] [command] [command-specific options] +``` +`common-options` include: +* `--fee xyz` - Transaction fee (0 by default) +* `--output file` - Write the raw Transaction to a file instead of sending it + +`command` variants: +* `pay` +* `cancel` +* `apply` + +#### Unconditional Immediate Transfer +```sh +// Command +$ solana-wallet pay 123 + +// Return + +``` + +#### Post-Dated Transfer +```sh +// Command +$ solana-wallet pay 123 \ + --after 2018-12-24T23:59 --require-timestamp-from + +// Return +{signature: , processId: } +``` +*`require-timestamp-from` is optional. If not provided, the transaction will expect a timestamp signed by this wallet's secret key* + +#### Authorized Transfer +A third party must send a signature to unlock the tokens. +```sh +// Command +$ solana-wallet pay 123 \ + --require-signature-from + +// Return +{signature: , processId: } +``` + +#### Post-Dated and Authorized Transfer +```sh +// Command +$ solana-wallet pay 123 \ + --after 2018-12-24T23:59 --require-timestamp-from \ + --require-signature-from + +// Return +{signature: , processId: } +``` + +#### Multiple Witnesses +```sh +// Command +$ solana-wallet pay 123 \ + --require-signature-from \ + --require-signature-from + +// Return +{signature: , processId: } +``` + +#### Cancelable Transfer +```sh +// Command +$ solana-wallet pay 123 \ + --require-signature-from \ + --cancelable + +// Return +{signature: , processId: } +``` + +#### Cancel Transfer +```sh +// Command +$ solana-wallet cancel + +// Return + +``` + +#### Send Signature +```sh +// Command +$ solana-wallet send-signature + +// Return + +``` + +#### Indicate Elapsed Time + +Use the current system time: +```sh +// Command +$ solana-wallet send-timestamp + +// Return + +``` + +Or specify some other arbitrary timestamp: +```sh +// Command +$ solana-wallet send-timestamp --date 2018-12-24T23:59 + +// Return + +``` + + +## Javascript solana-web3.js Interface + +*TBD, but will look similar to what the Wallet CLI offers wrapped up in a +Javacsript object*