Da2ce7:New Transaction: Difference between revisions
formating |
No edit summary |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'' | ''New Transaction'' is an proposal for a new extendable method of creating transactions.<br /> | ||
Each new transaction is defined by a random ''txnumber'' that should be unique globally.<br /> | |||
Advanced functions, such as transaction scripts, and importing and exporting can appropriately be done using the group of supporting functions. | |||
=== Transaction life-cycle === | |||
Every New Transaction goes through the following steps. (not always in the same order) | |||
==== Build ==== | |||
In this stage, a transaction is being built:<br /> | |||
* Any feature of the transaction may be modified. | |||
* Users can add, remove, any input, output or script. | |||
==== Ready ==== | |||
In this stage, only certain features may be modified:<br /> | |||
* Only inputs may be changed. (is this correct, or will past signatures be destroyed if we change them?) | |||
* Any other attribute that doesn't effect the existing signatures. | |||
==== Done ==== | |||
In this stage, the transaction is complete, and would be accepted by the network: | |||
* User still can add inputs, however all the outputs have already been fulfilled, these new inputs will be counted as fees. | |||
* After any change, a 'done' transaction gets automatically demoted to 'Ready' state. | |||
==== Submitted ==== | |||
In this stage the transaction has been published to the bitcoin network and is in/or is awaiting to be included in a block. | |||
=== Terms === | |||
''txnumber'' is a random string given to every transaction for identification purposes.<br /> | ''txnumber'' is a random string given to every transaction for identification purposes.<br /> | ||
''pubkey'' is assumed to be owned by the client that preforms the 'readying' of the transition (build > ready states) | ''pubkey'' is assumed to be owned by the client that preforms the 'readying' of the transition (build > ready states) | ||
'''This entire processing is lazy! Bitcoin will automatically fill-out everything just as it dose at-the-moment with the ''readytransaction'' stage.''' | '''This entire processing is lazy! Bitcoin will automatically fill-out everything just as it dose at-the-moment with the ''readytransaction'' stage.''' | ||
Line 16: | Line 35: | ||
== commands: == | == commands: == | ||
/// make a new transaction ( | /// make a new transaction (6 override) | ||
newtransaction | newtransaction | ||
newtransaction {name} | newtransaction {name} | ||
response { | newtransaction {txuniqueid} | ||
newtransaction {txuniqueid} {name} | |||
newtransaction {txid} | |||
newtransaction {txid} {name} | |||
response {txtxuniqueid} | |||
/// add an input to the transaction. (1 overrides) | /// add an input to the transaction. (1 overrides) | ||
addinput { | addinput {txuniqueid} {txid} {index} | ||
addinput { | addinput {txuniqueid} {txid} {index} {comment} | ||
response { | response {txuniqueid} {iouniqueid} | ||
/// add outputs to the transaction (6 overrides) | /// add outputs to the transaction (6 overrides) | ||
/// add fee to transaction | /// add fee to transaction | ||
addoutput { | addoutput {txuniqueid} {amount} {forced|suggested|optional} | ||
addoutput { | addoutput {txuniqueid} {amount} {forced|suggested|optional} {comment} | ||
// add change address to transaction | // add change address to transaction | ||
addoutput { | addoutput {txuniqueid} {pubkey} | ||
addoutput { | addoutput {txuniqueid} {pubkey} {comment} | ||
// add send outputs | // add send outputs | ||
addoutput { | addoutput {txuniqueid} {address} {amount} | ||
addoutput { | addoutput {txuniqueid} {address} {amount} {comment} | ||
response { | response {txuniqueid} {iouniqueid} | ||
// add many send outputs | // add many send outputs | ||
addoutputlist { | addoutputlist {txuniqueid} [{address},{amount}] | ||
response { | response {txuniqueid} [{iouniqueid}] | ||
/// remove input or outpus (1 override) | /// remove input or outpus (1 override) | ||
remove { | remove {txuniqueid} {iouniqueid} | ||
remove { | remove {txuniqueid} [{iouniqueid}] | ||
response { | response {txuniqueid} droped: {iouniqueid} | ||
response { | response {txuniqueid} droped: [{iouniqueid}] | ||
/// prints out human readable information about the tranaction | /// prints out human readable information about the tranaction | ||
shownewtransaction { | shownewtransaction {txuniqueid} (1 override) | ||
response { | response {txuniqueid} | ||
in: [{ | in: [{iouniqueid},{address},{amount},(comment)] | ||
in total: {amount} | in total: {amount} | ||
out: [{ | out: [{iouniqueid},{address},{amount},(comment)] | ||
out total: {amount} | out total: {amount} | ||
fee: {amount} | fee: {amount} | ||
size: {readytxn bit} | |||
state: {building:ready:done:submitted} | state: {building:ready:done:submitted} | ||
Line 73: | Line 99: | ||
response {txid} | response {txid} | ||
in: [{ | in: [{txid},{address},{amount},(comment)] | ||
in total: {amount} | in total: {amount} | ||
out: [ | out: [{address},{amount},(comment)] | ||
out total: {amount} | out total: {amount} | ||
fee: {amount} | fee: {amount} | ||
size: {readytxn bit} | |||
block: {block number} | block: {block number} | ||
/// demote a transaction (1 override) | /// demote a transaction (1 override) | ||
demotetransaction { | demotetransaction {txuniqueid} | ||
demotetransaction { | demotetransaction {txuniqueid} {build|ready|done} | ||
response { | response {txuniqueid} {building|ready|done} | ||
/// exports a binary encoded transition ( | /// exports a binary encoded transition (4 override) | ||
exporttransaction { | exporttransaction {txuniqueid} | ||
exporttransaction [txuniqueid] | |||
exporttransaction {txid} | exporttransaction {txid} | ||
exporttransaction [txid] | |||
response {binary data | response {binary data} | ||
/// import | /// import binary encoded transition(s) (1 override) | ||
inporttransaction {binary data} | |||
inporttransaction [{binary data}] | |||
response { | response [{txuniqueid}] | ||
/// check and complete ''build'' translation | /// check and complete ''build'' translation (1 override) | ||
reddytransaction { | reddytransaction {txuniqueid} | ||
reddytransaction [{txuniqueid}] | |||
response { | response [{txuniqueid}] {has made changes|no changes needed|not enough coins|invalid transaction} | ||
/// sign ''ready'' transaction | /// sign ''ready'' transaction (6 override) | ||
signtransaction { | signtransaction {txuniqueid} | ||
signtransaction [{txuniqueid}] | |||
// calls reddytransaction before hand if needed | // calls reddytransaction before hand if needed | ||
signtransaction -r { | signtransaction -r {txuniqueid} | ||
signtransaction -r [{txuniqueid}] | |||
// sign a pre-signed/partial transaction (signs for owned private keys) | |||
signtransaction -o {txuniqueid} | |||
signtransaction -o [{txuniqueid}] | |||
response { | response [{txuniqueid},{done|failed}] | ||
/// publish a ''done'' transaction to peers | /// publish a ''done'' transaction to peers (2 override) | ||
submittransaction { | // submits all 'done' transactions | ||
submittransaction -a | |||
// submits a single 'done' transaction | |||
submittransaction {txuniqueid} | |||
// submits a list of 'done' transaction | |||
submittransaction [{txuniqueid}] | |||
response { | response [{txuniqueid},{txid}] | ||
/// complete transaction from any stage and publish it | /// complete transaction from any stage and publish it (1 override) | ||
completeransaction { | completeransaction {txuniqueid} | ||
response { | response {txuniqueid} {txid} | ||
/// delete a transaction from local client | /// delete a transaction from local client | ||
droptransaction { | droptransaction {txuniqueid} | ||
responce dropped: { | responce dropped: {txuniqueid} |
Latest revision as of 19:56, 25 July 2011
New Transaction is an proposal for a new extendable method of creating transactions.
Each new transaction is defined by a random txnumber that should be unique globally.
Advanced functions, such as transaction scripts, and importing and exporting can appropriately be done using the group of supporting functions.
Transaction life-cycle
Every New Transaction goes through the following steps. (not always in the same order)
Build
In this stage, a transaction is being built:
- Any feature of the transaction may be modified.
- Users can add, remove, any input, output or script.
Ready
In this stage, only certain features may be modified:
- Only inputs may be changed. (is this correct, or will past signatures be destroyed if we change them?)
- Any other attribute that doesn't effect the existing signatures.
Done
In this stage, the transaction is complete, and would be accepted by the network:
- User still can add inputs, however all the outputs have already been fulfilled, these new inputs will be counted as fees.
- After any change, a 'done' transaction gets automatically demoted to 'Ready' state.
Submitted
In this stage the transaction has been published to the bitcoin network and is in/or is awaiting to be included in a block.
Terms
txnumber is a random string given to every transaction for identification purposes.
pubkey is assumed to be owned by the client that preforms the 'readying' of the transition (build > ready states)
This entire processing is lazy! Bitcoin will automatically fill-out everything just as it dose at-the-moment with the readytransaction stage.
Please not this draft doesn't include all possible error responses.
commands:
/// make a new transaction (6 override) newtransaction newtransaction {name} newtransaction {txuniqueid} newtransaction {txuniqueid} {name} newtransaction {txid} newtransaction {txid} {name} response {txtxuniqueid}
/// add an input to the transaction. (1 overrides) addinput {txuniqueid} {txid} {index} addinput {txuniqueid} {txid} {index} {comment} response {txuniqueid} {iouniqueid}
/// add outputs to the transaction (6 overrides) /// add fee to transaction addoutput {txuniqueid} {amount} {forced|suggested|optional} addoutput {txuniqueid} {amount} {forced|suggested|optional} {comment} // add change address to transaction addoutput {txuniqueid} {pubkey} addoutput {txuniqueid} {pubkey} {comment} // add send outputs addoutput {txuniqueid} {address} {amount} addoutput {txuniqueid} {address} {amount} {comment} response {txuniqueid} {iouniqueid} // add many send outputs addoutputlist {txuniqueid} [{address},{amount}] response {txuniqueid} [{iouniqueid}]
/// remove input or outpus (1 override) remove {txuniqueid} {iouniqueid} remove {txuniqueid} [{iouniqueid}] response {txuniqueid} droped: {iouniqueid} response {txuniqueid} droped: [{iouniqueid}]
/// prints out human readable information about the tranaction shownewtransaction {txuniqueid} (1 override) response {txuniqueid} in: [{iouniqueid},{address},{amount},(comment)] in total: {amount} out: [{iouniqueid},{address},{amount},(comment)] out total: {amount} fee: {amount} size: {readytxn bit} state: {building:ready:done:submitted} shownewtransaction {txid} (1 override) response {txid} in: [{txid},{address},{amount},(comment)] in total: {amount} out: [{address},{amount},(comment)] out total: {amount} fee: {amount} size: {readytxn bit} block: {block number}
/// demote a transaction (1 override) demotetransaction {txuniqueid} demotetransaction {txuniqueid} {build|ready|done} response {txuniqueid} {building|ready|done}
/// exports a binary encoded transition (4 override) exporttransaction {txuniqueid} exporttransaction [txuniqueid] exporttransaction {txid} exporttransaction [txid] response {binary data}
/// import binary encoded transition(s) (1 override) inporttransaction {binary data} inporttransaction [{binary data}] response [{txuniqueid}]
/// check and complete build translation (1 override) reddytransaction {txuniqueid} reddytransaction [{txuniqueid}] response [{txuniqueid}] {has made changes|no changes needed|not enough coins|invalid transaction}
/// sign ready transaction (6 override) signtransaction {txuniqueid} signtransaction [{txuniqueid}] // calls reddytransaction before hand if needed signtransaction -r {txuniqueid} signtransaction -r [{txuniqueid}] // sign a pre-signed/partial transaction (signs for owned private keys) signtransaction -o {txuniqueid} signtransaction -o [{txuniqueid}] response [{txuniqueid},{done|failed}]
/// publish a done transaction to peers (2 override) // submits all 'done' transactions submittransaction -a // submits a single 'done' transaction submittransaction {txuniqueid} // submits a list of 'done' transaction submittransaction [{txuniqueid}] response [{txuniqueid},{txid}]
/// complete transaction from any stage and publish it (1 override) completeransaction {txuniqueid} response {txuniqueid} {txid}
/// delete a transaction from local client droptransaction {txuniqueid} responce dropped: {txuniqueid}