Bläddra i källkod

Added: PIP-0008 Hook(s) to start external programs

Herman Schoenfeld 8 år sedan
förälder
incheckning
eaff04ad99
1 ändrade filer med 67 tillägg och 0 borttagningar
  1. 67 0
      PIP/PIP-0008.md

+ 67 - 0
PIP/PIP-0008.md

@@ -0,0 +1,67 @@
+<pre>
+  PIP: 8
+  Title: Hook(s) to start external programs
+  Type: Backend
+  Impact: None
+  Author: Preben Björn Biermann Madsen (nightraven) <i>&lt;[email protected]&gt;</i>
+  Comments-URI: <a href="https://github.com/PascalCoin/PascalCoin/issues/48">https://github.com/PascalCoin/PascalCoin/issues/48</a>
+  Status: Draft
+  Created: 2017-08-12
+</pre>
+
+## Summary
+
+A hook to watch the paylod and invoke external functions when certain events occur.
+ 
+## Motivation
+
+Hook(s) will make it easy for developers and users to implement new functions without modifying the original wallet.
+
+## Specification
+
+The payload opens up for an easy way to implement new functions to the wallet. It is already possible to watch the payload through the JSON RPC API, but a hook would make it more easy for developers and users to interact with the PascalCoin Wallet.
+
+The hook should watch an account for incomming payloads and invoke an external program when a marker is received. Account, external program and marker should be defined by the user at a setup page or in an ini-file. The payload and other necessary data should continuously be transferred via TCP or UPC to the external program.
+
+There is a difficulty for this hook to work namely the encoding facility of the payload. This should be addressed somehow or there should be a secondary uncode payload or at least an uncoded field for the marker.
+
+In the future such a hook could be combined with some scripting and / or call back functions.
+
+
+**Example of possible use:**
+
+The [Whitepaper][1] describes the possibilities for layer 2 applications. Such applications could be invoked by a hook. And a layer 2 need a protocol like the The Omni Layer Protocol. Something like the following:
+
+- Marker -- 32-bit unsigned integer, 4 bytes
+- Protocol version -- 16-bit unsigned integer, 2 bytes
+- Transaction type -- 16-bit unsigned integer, 2 bytes
+- Currency ID -- 32-bit unsigned integer, 4 bytes
+- Amount to pay -- 64-bit signed integer, 8 bytes 
+- Currency ID desired -- 32-bit unsigned integer, 4 bytes
+- Amount desired -- 64-bit signed integer, 8 bytes 
+- Payment window -- 8-bit unsigned integer, 1 byte (blocks)
+- Transaction fee -- 32-bit signed integer, 4 bytes
+- Action -- 8-bit unsigned integer, 1 byte (offer, accept, reject)
+
+38 bytes in all or 52 bytes Base58 encoded or 76 bytes if Base 16 encoded.
+
+The hook reacts to the marker and transfers the handling to the external program.
+ 
+## Rationale
+
+TO-BE-EDITED
+Discussion why was the specification was chosen over alternate designs. Evidence supporting the specification should be provided here, as well as community concerns and consensus.
+
+## Backwards Compatibility
+
+PIP is fully backwards compatible.
+
+## Reference Implementation
+
+None provided.
+ 
+## Links
+
+1. [PascalCoin White Paper V2][1]
+
+[1]: https://github.com/PascalCoin/PascalCoin/blob/master/PascalCoinWhitePaperV2.pdf