TimeToCashout.json 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. {
  2. "contracts": [
  3. {
  4. "contractName": "TimeToCashout",
  5. "constructorInputs": [
  6. {
  7. "name": "owner",
  8. "type": "pubkey",
  9. "visible": false,
  10. "unused": false
  11. },
  12. {
  13. "name": "recoveryPkh",
  14. "type": "bytes20",
  15. "visible": true,
  16. "unused": false
  17. },
  18. {
  19. "name": "gratitude",
  20. "type": "int",
  21. "visible": true,
  22. "unused": false
  23. },
  24. {
  25. "name": "timeout",
  26. "type": "int",
  27. "visible": true,
  28. "unused": false
  29. }
  30. ],
  31. "abi": [
  32. {
  33. "name": "transfer",
  34. "inputs": [
  35. {
  36. "name": "signature",
  37. "type": "sig"
  38. }
  39. ]
  40. },
  41. {
  42. "name": "cashout",
  43. "inputs": []
  44. }
  45. ],
  46. "dependencies": [],
  47. "bytecode": "OP_FROMALTSTACK OP_FROMALTSTACK OP_FROMALTSTACK OP_FROMALTSTACK OP_4 OP_PICK OP_0 OP_NUMEQUAL OP_IF OP_5 OP_ROLL OP_SWAP OP_CHECKSIGVERIFY OP_2DROP OP_2DROP OP_ELSE OP_4 OP_ROLL OP_1 OP_NUMEQUALVERIFY OP_3 OP_ROLL OP_CHECKSEQUENCEVERIFY OP_DROP 005114 OP_ROT OP_CAT OP_0 OP_OUTPUTBYTECODE OP_EQUALVERIFY OP_0 OP_OUTPUTVALUE OP_5 OP_PUSH_TX_STATE OP_3 OP_ROLL OP_SUB OP_GREATERTHANOREQUAL OP_VERIFY OP_DROP OP_ENDIF",
  48. "contracts": []
  49. }
  50. ],
  51. "source": "pragma nexscript >= 0.2.0;\n\ncontract TimeToCashout(\n pubkey owner,\n bytes20 visible recoveryPkh,\n int visible gratitude,\n int visible timeout,\n) {\n function transfer(sig signature) {\n require(checkSig(signature, owner));\n }\n\n function cashout() {\n require(tx.age >= timeout);\n\n bytes23 recoveryBytecode = new LockingBytecodeP2PKT(recoveryPkh);\n\n require(tx.outputs[0].lockingBytecode == recoveryBytecode);\n require(tx.outputs[0].value >= tx.amountIn - gratitude);\n }\n}\n",
  52. "compiler": {
  53. "name": "nexc",
  54. "version": "0.10.0"
  55. },
  56. "updatedAt": "2024-09-11T09:15:53.813Z"
  57. }