Da2ce7:New Transaction

From BitcoinWiki
This is the approved revision of this page, as well as being the most recent.
Jump to: navigation, search

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[edit]

Every New Transaction goes through the following steps. (not always in the same order)


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.


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.


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.


In this stage the transaction has been published to the bitcoin network and is in/or is awaiting to be included in a block.


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)

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.


 /// make a new transaction (6 override)
 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}



See Also on BitcoinWiki[edit]