Go to file
Jae Kwon adf0392e56 Callbacks for ReqRes 2016-02-08 13:30:30 -08:00
client Callbacks for ReqRes 2016-02-08 13:30:30 -08:00
cmd better response printing 2016-02-07 19:59:19 -08:00
example Use protobuf enums for RetCode. s/RetCode/CodeType/g 2016-01-31 20:39:43 -08:00
server Use protobuf enums 2016-01-31 19:56:02 -08:00
tests Use protobuf enums 2016-01-31 19:56:02 -08:00
types Compile new types.proto for new CodeType enums 2016-02-05 23:15:08 -08:00
.gitignore Add .pyc to gitignore; Fix js example 2015-12-21 17:23:05 -08:00
LICENSE Change license format 2015-12-23 14:11:59 -08:00
Makefile Convert TMSP to use Protobuf 2016-01-30 19:36:33 -08:00
README.md Log not error; Remove Listener TMSP messages...; Make counter BigEndian 2016-01-25 13:58:34 -08:00

README.md

Tendermint Socket Protocol (TMSP)

Blockchains are a system for creating shared multi-master application state. TMSP is a socket protocol enabling a blockchain consensus engine, running in one process, to manage a blockchain application state, running in another.

For more information on TMSP, motivations, and tutorials, please visit our blog post.

Message types

AppendTx

  • Arguments:
    • TxBytes ([]byte)
  • Returns:
    • Code (int8)
    • Result ([]byte)
    • Log (string)
  • Usage:
    Append and run a transaction. The transaction may or may not be final.

CheckTx

  • Arguments:
    • TxBytes ([]byte)
  • Returns:
    • Code (int8)
    • Result ([]byte)
    • Log (string)
  • Usage:
    Validate a transaction. This message should not mutate the state.

GetHash

  • Returns:
    • Hash ([]byte)
    • Log (string)
  • Usage:
    Return a Merkle root hash of the application state

Flush

  • Usage:
    Flush the response queue. Applications that implement types.Application need not implement this message -- it's handled by the project.

Info

  • Returns:
    • Data ([]string)
  • Usage:
    Return an array of strings about the application state. Application specific.

SetOption

  • Arguments:
    • Key (string)
    • Value (string)
  • Returns:
    • Log (string)
  • Usage:
    Set application options. E.g. Key="mode", Value="mempool" for a mempool connection, or Key="mode", Value="consensus" for a consensus connection. Other options are application specific.

Changelog

Jan 23th, 2016

  • Added CheckTx/Query TMSP message types
  • Added Result/Log fields to AppendTx/CheckTx/SetOption
  • Removed Listener messages
  • Removed Code from ResponseSetOption and ResponseGetHash
  • Made examples BigEndian

Jan 12th, 2016

  • Added "RetCodeBadNonce = 0x06" return code

Jan 8th, 2016

Tendermint/TMSP now comes to consensus on the order first before AppendTx. This means that we no longer need the Commit/Rollback TMSP messages. Instead, theres a “CheckTx” message for mempool to check the validity of a message. One consequence is that txs in blocks now may include invalid txs that are ignored. In the future, we can include a bitarray or merkle structure in the block so anyone can see which txs were valid. To prevent spam, applications can implement their “CheckTx” messages to deduct some balance, so at least spam txs will cost something. This isnt any more work that what we already needed to do, so its not any worse. You can see the new changes in the tendermint/tendermint “order_first” branch, and tendermint/tmsp “order_first” branch. If you your TMSP apps to me I can help with the transition. Please take a look at how the examples in TMSP changed, e.g. how AppContext was removed, CheckTx was added, how the TMSP msg bytes changed, and how commit/rollback messages were removed.