4 contract TrivialLock() locks amount of asset {
5 clause trivialUnlock() {
11 const LockWithPublicKey = `
12 contract LockWithPublicKey(publicKey: PublicKey) locks amount of asset {
13 clause unlockWithSig(sig: Signature) {
14 verify checkTxSig(publicKey, sig)
15 unlock amount of asset
20 const LockWithPKHash = `
21 contract LockWithPublicKeyHash(pubKeyHash: Hash) locks amount of asset {
22 clause spend(pubKey: PublicKey, sig: Signature) {
23 verify sha3(pubKey) == pubKeyHash
24 verify checkTxSig(pubKey, sig)
25 unlock amount of asset
30 const LockWith2of3Keys = `
31 contract LockWith3Keys(pubkey1, pubkey2, pubkey3: PublicKey) locks amount of asset {
32 clause unlockWith2Sigs(sig1, sig2: Signature) {
33 verify checkTxMultiSig([pubkey1, pubkey2, pubkey3], [sig1, sig2])
34 unlock amount of asset
39 const LockToOutput = `
40 contract LockToOutput(address: Program) locks amount of asset {
42 lock amount of asset with address
48 contract TradeOffer(requestedAsset: Asset, requestedAmount: Amount, sellerProgram: Program, sellerKey: PublicKey) locks amount of asset {
50 lock requestedAmount of requestedAsset with sellerProgram
51 unlock amount of asset
53 clause cancel(sellerSig: Signature) {
54 verify checkTxSig(sellerKey, sellerSig)
55 unlock amount of asset
60 const EscrowedTransfer = `
61 contract EscrowedTransfer(agent: PublicKey, sender: Program, recipient: Program) locks amount of asset {
62 clause approve(sig: Signature) {
63 verify checkTxSig(agent, sig)
64 lock amount of asset with recipient
66 clause reject(sig: Signature) {
67 verify checkTxSig(agent, sig)
68 lock amount of asset with sender
73 const RevealPreimage = `
74 contract RevealPreimage(hash: Hash) locks amount of asset {
75 clause reveal(string: String) {
76 verify sha3(string) == hash
77 unlock amount of asset