Factoid 应用程序接口(API)

这份是关于Factoids币和Facoid钱包的应用程序接口(API)的摘要。此处,钱包(Wallet)是一个命令行驱动程序,旨在演示API而非商业钱包解决方案。

第一步需要安装Factom客户端和Factom钱包帮手。参见[如何安装]指引,设定你的运行环境(http://factom.org/howto) 并需要运行Factomd和Fctwallet。请注意在今后的几个月内,可能需要对Factomd不定期的进行更新,以持续与网络对接。具体通知更新,请参见我们的技术博客

关于这两个应用程序的接口,Factomd是加入Factom网络的客户端,另一个fctwallet提供通用的钱包功能,并维护私钥所存放的地址簿。此外,第三个程序walletapp提供线下钱包(cold wallet)功能,生成线下交易并其上传Factom网络。

Fatcom客户端Factomd提供表征性状态传输(RESTful)接口,默认存放地址http://localhost:8088 任何向Factomd发出的请求都不会产生安全性问题,因此Factomd无需位于同一位置进行程序创建和提交事务。

Factom钱包Fctwallet亦提供表征性状态传输(RESTful)接口,默认存放地址http://localhost:8089 针对钱包中的Factoid地址,向Fctwallet发出请求会产生并建立交易,因此需要保证安全的访问接口。

Factom钱包walletapp是替代方案,仅支持Factoid功能,并只与Factomd进行通信。walletapp用于冷存储,创建线下交易,并将线下交易传输到Factom网络。我们很快会基于walletapp发布图形用户界面(GUI),向Factoid用户提供支持。

Factom钱包命令行factom-cli用于支持Factoid的交易,并接入Factom通用协议。factom-cli通过连接到factomdfctwallet的接口,执行相应的功能。这个程序的主要用来证明Factom API的使用,也可以作为Factom脚本交易处理。

请注意:如果安装了curl,以下API调用的案例可以在命令行中直接运行,并根据具体情况,API的调用以curl -X POST 或者 curl -X GET作为前缀。

factomd

这份摘要,有关Factoids交易的factomd应用程序接口。我们在今后将会添加更多的细节。

  • Post http://localhost:8088/v1/commit-chain/?

    生成链,创建一个新链的第一步

    首先需要调用 fctwallet API 'compose-chain-submit' ,以获取作为该API输入的CommitChainMsg 例如:

    向compose-entry-submit API发送请求,返回一个JSON对象

    <code>$ curl -X POST -H 'Content-Type: application/json' -d '{"ExtIDs":["foo", "bar"], "Content":"Hello Factom!"}' localhost:8089/v1/compose-chain-submit/entrycreditaddressname
    </code>

    返回

    {"ChainID":"92475004e70f41b94750f4a77bf7b430551113b25d3d57169eadca5692bb043d","ChainCommit":{"CommitChainMsg":"0001521deb5c7891ac03adffe815c64088dc98ef281de1891c0f99a63c55369c1727dc73580cbcc309ee55fa780ce406722b7a074138c994c859e2eda619bbad59b41775b51176464cb77fc08b6ef6767dcc315b4729a871071053cfe4af5a6397f66fbe01042f0b79a1ad273d890287e5d4f16d2669c06c523b9e48673de1bfde3ea2fda309ac92b393f12e48b277932e9af0599071298a24be285184e03d0b79576d1d6473342e48fcb21b2ca99e41b4919ef790db9f5a526b4d150d20e1c2e25237249db2e109"},"EntryReveal":{"Entry":"0092475004e70f41b94750f4a77bf7b430551113b25d3d57169eadca5692bb043d000a0003666f6f000362617248656c6c6f20466163746f6d21"}}

    返回值包括ChainCommit和 Entry Reveal. 生成记录:

    $ curl -i -X POST -H 'Content-Type: application/json' -d '{"CommitChainMsg":"0001521deb5c7891ac03adffe815c64088dc98ef281de1891c0f99a63c55369c1727dc73580cbcc309ee55fa780ce406722b7a074138c994c859e2eda619bbad59b41775b51176464cb77fc08b6ef6767dcc315b4729a871071053cfe4af5a6397f66fbe01042f0b79a1ad273d890287e5d4f16d2669c06c523b9e48673de1bfde3ea2fda309ac92b393f12e48b277932e9af0599071298a24be285184e03d0b79576d1d6473342e48fcb21b2ca99e41b4919ef790db9f5a526b4d150d20e1c2e25237249db2e109"}' localhost:8088/v1/commit-chain

    显示第一项记录:

    $ curl -i -X POST -H 'Content-Type: application/json' -d '{"Entry":"0092475004e70f41b94750f4a77bf7b430551113b25d3d57169eadca5692bb043d000a0003666f6f000362617248656c6c6f20466163746f6d21"}' localhost:8088/v1/reveal-entry

    生成链并记录第一项记录

  • Post http://localhost:8088/v1/reveal-chain/?

    在链中显示第一项记录。需要完成链的构建。API调用的格式如上所示

  • Post http://localhost:8088/v1/commit-entry/?

    生成记录 在链中写入记录的第一步

    需要首先调用fctwallet API 'compose-entry-submit',以获取作为该API输入的CommitEntryMsg 例如:

    向compose-entry-submit API发送请求,返回一个JSON对象

    <code>$ curl -i -X POST -H 'Content-Type: application/json' -d '{"ChainID":"5c337e9010600c415d2cd259ed0bf904e35666483277664d869a98189b35ca81", "ExtIDs":["foo", "bar"], "Content":"Hello Factom!"}' localhost:8089/v1/compose-entry-submit/entrycreditaddressname
    </code>

    返回

    {"EntryCommit":{"CommitEntryMsg":"0001521dc2d47d32cbdd3fc21889e22cc408ae0b0c120662c0873331cc5ce8ebdc1b6722968ce20179a1ad273d890287e5d4f16d2669c06c523b9e48673de1bfde3ea2fda309ac92f4f4b4d52cc6b228b9b621b1b1969ab46bfa4f80379e14df15e4d48aefa72db6dd835fc7a70d2c79cc9e01eb9ca5be33875439c97c791a1b57f191df03a44008"},"EntryReveal":{"Entry":"005c337e9010600c415d2cd259ed0bf904e35666483277664d869a98189b35ca81000a0003666f6f000362617248656c6c6f20466163746f6d21"}}

    返回值包括生成记录和显示记录. 生成记录:

    $ curl -i -X POST -H 'Content-Type: application/json' -d '{"CommitEntryMsg":"0001521dc2d47d32cbdd3fc21889e22cc408ae0b0c120662c0873331cc5ce8ebdc1b6722968ce20179a1ad273d890287e5d4f16d2669c06c523b9e48673de1bfde3ea2fda309ac92f4f4b4d52cc6b228b9b621b1b1969ab46bfa4f80379e14df15e4d48aefa72db6dd835fc7a70d2c79cc9e01eb9ca5be33875439c97c791a1b57f191df03a44008"}' localhost:8088/v1/commit-entry

    显示记录:

    $ curl -i -X POST -H 'Content-Type: application/json' -d '{"Entry":"005c337e9010600c415d2cd259ed0bf904e35666483277664d869a98189b35ca81000a0003666f6f000362617248656c6c6f20466163746f6d21"}' localhost:8088/v1/reveal-entry

根据提供的ChainID写入记录

请注意:ChainName可用来替代ChainID。但如果ChainID的域有数据,ChainName的域会被忽略。

例如 json 记录: {"ChainName":["foo", "bar"], "ExtIDs":["ex1", "ex2"], "Content":"Hello Factom!"}

与以下一致:

{"ChainID":"92475004e70f41b94750f4a77bf7b430551113b25d3d57169eadca5692bb043d", "ExtIDs":["ex1", "ex2"], "Content":"Hello Factom!"}

  • Post http://localhost:8088/v1/reveal-entry/?

    显示新的条目,需要完成写入链中的记录

  • Post http://localhost:8088/v1/factoid-submit/?

    提交事务。需要对交易进行编码,作为请求的一部分。例如,生成一个从xxx账户向yyy账户转10个Factoids币的一项交易,可以编码为

    <code>curl -X GET http://localhost:8088/v1/factoid-submit/httpp02015023e2886901010083ddb4b3006302ac3d
    a1a1e5eac31af88cdbb886f34470cc0415d1968d8637814cfac482f283dceb940025edb8b25808b6e6d
    48ad5ba67d0843eaf962c40f63c9b4df91b8fe7364ae872014b776d236585f2ed658ec9d24a4a65e08e
    f6074573f570b8b25a9d424b1d955d2caaa4d2cfe30eb8217844f8b28b8a47ce6dc3e5eecd03f30954c
    a3f0b64a63e0687f667bc3300bb33a0638953d442db2cd6fb4d27045318ec09463542c66305
    </code>

    这看上去是很复杂的数据结构。很多用户会使用fctwallet建立这项请求。

  • Get http://localhost:8088/v1/directory-block-head/?

    返回目录区块头目的哈希值。无需任何参数,返回一个JSON形式的字符串。

    <code>{"KeyMR":"f7eb0456b30b1a4b50867a5307532e92ddee7279ffc955ce1284cd142f94d642"}
    </code>
  • Get http://localhost:8088/v1/directory-block-height/?

    返回当前目录区块的高度:

    <code>curl -X GET http://localhost:8088/v1/directory-block-height/
    </code>

    返回写入时间:

    <code>{"Height":4585}
    </code>
  • Get http://localhost:8088/v1/get-raw-data/([^/]+)

    返回指定哈希值的区块

    <code>curl -X GET http://localhost:8088/v1/get-raw-data/f7eb0456b30b1a4b50867a5307532e92ddee7279ffc955ce1284cd142f94d642
    </code>

    返回:

    <code>{"Data":"00fa92e5a291592f5f78c547560edceb8bc5ef142f20e9689fcd587557a2f3d18406d6e5ece9eacaa1c31d1371af60d6a9d5ea65654d1ff5698f7fb181d0ae4bc8582c093186dd2a14e83bbf53bb7cab230b1d0e2cefbb0d93d16c09c39ea13e338d0a8c0a016f279a000010c100000004000000000000000000000000000000000000000000000000000000000000000a98f7817976ed8ff9aa306834d98c145d7c0334d7057f89dd2f035df1b37946ae000000000000000000000000000000000000000000000000000000000000000c9432448e6c7f56450804b42ed9c1653182efb6f48a5d8da2c22d1789e7dbff44000000000000000000000000000000000000000000000000000000000000000fb642daa292af42dda109bc87cddd31647da6fef9f3f25129c3740ef4d72761a0df3ade9eec4b08d5379cc64270c30ea7315d8a8a1a69efe2b98a60ecdd69e604789b0103e5f8358d7f8402264837986a2b29ac59be8a796dbbe75eecf6a853d9"}
    </code>

    这些数据能被分散到Factom的目录区块机构中。

  • Get http://localhost:8088/v1/directory-block-by-keymr/([^/]+)

    返回指定哈希值的区块

    <code>curl -X GET http://localhost:8088/v1/directory-block-by-keymr/f7eb0456b30b1a4b50867a5307532e92ddee7279ffc955ce1284cd142f94d642
    </code>

    返回:

    <code>{"Header":{
       "PrevBlockKeyMR":"e9eacaa1c31d1371af60d6a9d5ea65654d1ff5698f7fb181d0ae4bc8582c0931",
       "SequenceNumber":4289,
       "Timestamp":1443711000},
       "EntryBlockList":[
          {"ChainID":"000000000000000000000000000000000000000000000000000000000000000a",
           "KeyMR":"98f7817976ed8ff9aa306834d98c145d7c0334d7057f89dd2f035df1b37946ae"},
          {"ChainID":"000000000000000000000000000000000000000000000000000000000000000c",
           "KeyMR":"9432448e6c7f56450804b42ed9c1653182efb6f48a5d8da2c22d1789e7dbff44"},
          {"ChainID":"000000000000000000000000000000000000000000000000000000000000000f",
           "KeyMR":"b642daa292af42dda109bc87cddd31647da6fef9f3f25129c3740ef4d72761a0"},
          {"ChainID":"df3ade9eec4b08d5379cc64270c30ea7315d8a8a1a69efe2b98a60ecdd69e604",
           "KeyMR":"789b0103e5f8358d7f8402264837986a2b29ac59be8a796dbbe75eecf6a853d9"}
      ]
    }
    </code>

    这项调用返回目录区块中的数据,并转化为JSON结构。

  • Get http://localhost:8088/v1/entry-block-by-keymr/([^/]+)

    返回记录区块机构。这项调用为:

    <code>curl -X GET http://localhost:8088/v1/entry-block-by-keymr/789b0103e5f8358d7f8402264837986a2b29ac59be8a796dbbe75eecf6a853d9
    </code>

    返回

    <code>{
      "Header":{
        "BlockSequenceNumber":2479,
        "ChainID":"df3ade9eec4b08d5379cc64270c30ea7315d8a8a1a69efe2b98a60ecdd69e604",
        "PrevKeyMR":"63833701a61a846ebe8d38a1c6ede6bf5d5516990c34372c7f7936812ec09bde",
        "Timestamp":1443711000
      },
      "EntryList":[
          { "EntryHash":"c8f4936962836cda0d8bf712653d97f8d8b5cbe675e495b6dfab6b2395c8b80a",
            "Timestamp":1443711360
          }
      ]
    }
    </code>

    这是一个记录区块的结构,分拆成JSON结构

  • Get http://localhost:8088/v1/entry-by-hash/([^/]+)", handleEntry)

    返回一项分拆成JSON的记录:

    <code>curl -X GET http://localhost:8088/v1/entry-by-hash/c8f4936962836cda0d8bf712653d97f8d8b5cbe675e495b6dfab6b2395c8b80a
    </code>

    返回:

    <code>{"ChainID":"df3ade9eec4b08d5379cc64270c30ea7315d8a8a1a69efe2b98a60ecdd69e604",
    "Content":"7b22416e63686f725265636f7264566572223a312c224442486569676874223a343238382c224b65794d52223a2265396561636161316333316431333731616636306436613964356561363536353464316666353639386637666231383164306165346263383538326330393331222c225265636f7264486569676874223a343238382c22426974636f696e223a7b2241646472657373223a22314b3253586741706d6f39755a6f79616876736253616e705657627a5a5756564d46222c2254584944223a2263323363623932303764356266643863376539656565303438316338333563663463373665626132363565393832656330623032353964636666323536636134222c22426c6f636b486569676874223a3337373031312c22426c6f636b48617368223a2230303030303030303030303030303030303466396138653735343065383135316336373231653131646264343166633936663931653432313661373161356334222c224f6666736574223a3835317d7d6234643966633530343564653635313532353664623337316463633138636266653761616537383664326262336565633466316334373966636132393762373266363330633261313439366436653737653139633631626165663030326233396133633064656534636439323963396335393836326331366639646136353033","ExtIDs":null}
    </code>

    返回一项特定记录,并分拆成JSON格式

  • Get http://localhost:8088/v1/chain-head/([^/]+)

    返回条目链中第一项记录的梅克尔根(KeyMR)。请求:

    <code>curl -X GET http://localhost:8088/v1/chain-head/df3ade9eec4b08d5379cc64270c30ea7315d8a8a1a69efe2b98a60ecdd69e604
    </code>

    返回:

    <code>{"ChainHead":"bfd814a3b9a4356e04c816fe4ce1a53198953ab321912d60dacba766950e5591"}
    </code>
  • Get http://localhost:8088/v1/entry-credit-balance/([^/]+)

    返回指定数据条目信用地址的余额。例如,请求:

    <code>curl -X GET http://localhost:8088/v1/entry-credit-balance/748be8327d20fee4365e6b5a3dca7df1e59da47e9ebd99129ba84d58d4d0726b
    </code>

    可能返回(取决于该地址该时刻的余额):

    <code>{"Response":"4000","Success":true}
    </code>

    这表明该数据条目信用地址 (EC2eUoDPupuQXm5gxs1sCBCv3bbZBCYFDTjaFQ6iRaAKfyXNqjEJ)解码 为:748be8327d20fee4365e6b5a3dca7df1e59da47e9ebd99129ba84d58d4d0726b 并有4000的条目信用积分。

  • Get http://localhost:8088/v1/factoid-balance/([^/]+)

    返回指定地址的Factoid余额。例如,该项请求:

    <code>curl -X GET http://localhost:8088/v1/factoid-balance/f6e117ea838cb652e9cfc3b29552d5887800a7ba614df0bd8c13e171eddc5897
    </code>

    返回:

    <code>{"Response":"1210268000","Success":true}
    </code>

    需要注意的是,类似于比特币,Factoids使用固定小数点反映货币数量。如 12.10268000 表示 12.10268 枚factoids币.

  • Get http://localhost:8088/v1/factoid-get-fee/

    返回数据条目信用与Factoids币的现行折换率:

    <code>curl -X GET http://localhost:8088/v1/factoid-get-fee/
    </code>

    或许返回

    <code>{"Fee":100000}
    </code>

    表明.001 Factoids 可以购买1条条目信用.

  • Get http://localhost:8088/v1/properties/",handleProperties)

    返回Factom不同组成部分版本号:

    <code>curl -X GET http://localhost:8088/v1/properties/
    </code>

    返回:

    <code>{
      "Protocol_Version":1005,
      "Factomd_Version":3002,
      "Fctwallet_Version":0
    }
    </code>

fctwallet

  • Get http://localhost:8089/v1/factoid-balance/([^/]+)

    返回指定Factoid地址的Factoid的余额。这项请求可以使用钱包地址名,Factoid地址,或者该地址对应的16进制

    举例:

    <code>curl -X GET "http://localhost:8089/v1/factoid-balance/FAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    curl -X GET "http://localhost:8089/v1/factoid-balance/9e72fa1dbdac30b557c857a1dcdca04b4ae748e52dc492e1f85f6af6f29f6534"  
    curl -X GET "http://localhost:8089/v1/factoid-balance/FactomAddress01"
    </code>

    会返回:

    <code>{"Response":"1210680000","Success":true}
    </code>

    若从以上相同地址返回的余额相等,表明你的地址簿有一项记录FactomAddress01,它的私钥是FA3ArvkijVcgrFVj45PBgGBfWm1MWAEjV1SbVxSFiUNT6s9F7AQb.

  • Get http://localhost:8089/v1/entry-credit-balance/([^/]+)

    返回指定地址的条目信用余额。这项请求可以使用已知的钱包的地址名,条目信用的地址,或者该地址对应的16进制

    举例:对于一个指定的钱包和条目信用地址:

    <code>curl -X GET "http://localhost:8089/v1/entry-credit-balance/ECxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    curl -X GET "http://localhost:8089/v1/entry-credit-balance/748be8327d20fee4365e6b5a3dca7df1e59da47e9ebd99129ba84d58d4d0726b"
    curl -X GET "http://localhost:8090/EntryCreditAddress001"
    </code>

    将返回

    <code>{"Response":"4000","Success":true}
    </code>

    假定你的钱包有一项条目记录 EntryCreditAddress001 对应所给定的公共地址的私钥。

  • Get http://localhost:8089/v1/factoid-generate-address/([^/]+)

    生成地址,并在钱包中创建一个条目保存该地址。地址是从确定的散列中创建。因此,当你备份钱包时,即使有些地址是备份后被创建,但是你的钱包也能够有效恢复。

    调用:

    <code>curl -X GET http://localhost:8089/v1/factoid-generate-address/fctAddress0001
    </code>

    会生成一个新的地址fctAddress0001, 并为其分配一个新的私钥。

  • Get http://localhost:8089/v1/factoid-generate-ec-address/([^/]+)

    生成信用条目地址,并在钱包中创建一个条目保存该地址。地址是从确定的散列中创建。因此,当你备份钱包时,即使有些地址是备份后被创建,但是你的钱包也能够有效恢复。

    调用:

    <code>curl -X GET http://localhost:8089/v1/factoid-generate-ec-address/ECAddress0001
    </code>

    会生成一个新的地址 ECAddress0001, 并为其分配一个新的私钥。

  • Get http://localhost:8089/v1/factoid-generate-address-from-private-key/(.*)

    这项请求是从另一个源导入十六进制的factoid私钥,提供了一个私钥和名字。例如:

    <code>curl -X GET http://localhost:8089/v1/factoid-generate-address-from-private-key/?name=addr01&privateKey=85d6755c286c6f139b1696ca74b0c14da473beadc37b2ec6273f2a92ce8d7c88
    </code>

    会导入给定的私钥,保存在钱包地址addr001下,并返回一个公钥。需要注意的是,以这种形式导入的私钥需要立即备份,以保证安全性。

  • Get http://localhost:8089/v1/factoid-generate-ec-address-from-private-key/(.*)

    这项请求是从另一个源导入十六进制的信用条目私钥,提供了一个私钥和名字。例如:

    <code>curl -X GET http://localhost:8089/v1/factoid-generate-ec-address-from-private-key/?name=addr001&privateKey=3ffa892f2445286a06c0dc591d7fa557d16701e44ec1cbee2930f7d7dfb62d57
    </code>

    会导入给定的私钥,保存在钱包地址addr001下,并返回一个公钥。需要注意的是,以这种形式导入的私钥需要立即备份,以保证安全性。

  • Get http://localhost:8089/v1/factoid-generate-address-from-human-readable-private-key/(.*)

    这项请求是从另一个源导入可读的factoid私钥,提供了一个私钥和名字。例如:

    <code>curl -X GET "http://localhost:8089/v1/factoid-generate-address-from-human-readable-private-key/?name=addr001&privateKey=Fsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    </code>

    会导入给定的私钥,保存在钱包地址addr001下,并返回一个公钥。需要注意的是,以这种形式导入的私钥需要立即备份,以保证安全性。

  • Get http://localhost:8089/v1/factoid-generate-ec-address-from-human-readable-private-key/(.*)

    这项请求是从另一个源导入可读的信用条目私钥,提供了一个私钥和名字。例如:

    <code>curl -X GET "http://localhost:8089/v1/factoid-generate-address-from-human-readable-private-key/?name=addr001&privateKey=Esxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    </code>

    会导入给定的私钥,保存在钱包地址addr001下,并返回一个公钥。需要注意的是,以这种形式导入的私钥需要立即备份,以保证安全性。

  • Get http://localhost:8089/v1/factoid-generate-address-from-token-sale/(.*)

    在销售过程中接受Koinfiy的信息,并在钱包中生成相应的记录,例如:

    <code>curl -X GET http://localhost:8089/v1/factoid-generate-address-from-token-sale/?name=koinifyAddr&mnemonic=<12 words separated by %20>
    </code>

    返回公钥

  • Post http://localhost:8089/v1/factoid-new-transaction/([^/]+)

    创建一项新的交易以及对应的钥匙,该钥匙将在其他操作过程中用于添加输入或输出,添加信用条目输出,支付费用,签署交易,以及传递。例如:

    <code>curl -X POST http://localhost:8089/v1/factoid-new-transaction/trans
    </code>

    返回

    <code>{"Response":"Success building a transaction","Success":true}
    </code>

    生成了一项新交易,交易名为‘trans’ 我们将在接下来的命令中使用该项交易。

  • Post http://localhost:8089/v1/factoid-delete-transaction/([^/]+)

    根据名字删除特定的交易

    <code>curl -X POST http://localhost:8089/v1/factoid-delete-transaction/trans
    </code>

    返回

    <code>{"Response":"Success deleting transaction","Success":true}
    </code>

    移除‘trans’交易后。若要继续以trans交易名进行交易,需要重新创造交易‘trans’。

  • Post http://localhost:8089/v1/factoid-add-fee/(.*)

    对于指定交易增添费用。这项请求计算需要支付的费用,并把它添入特定的输入。输入和输出必须完全相等,因为这项调用不会处理不等的交易,由于校对金额一致会相当的棘手。

    <code>curl -X POST http://localhost:8089/v1/factoid-add-fee/ -d "key=trans&name=FA3EPZYqodgyEGXNMbiZKE5TS2x2J9wF8J9MvPZb52iGR78xMgCb"
    </code>

    返回

    <code>{"Response":"Added             0.153318 to FA3EPZYqodgyEGXNMbiZKE5TS2x2J9wF8J9MvPZb52iGR78xMgCb","Success":true}
    </code>

    假定Factoid地址是该项交易的输入,那么所需要的费用将会被添加到该地址

  • Post http://localhost:8089/v1/factoid-add-input/(.*)

    添加给定的输入信息到特定的交易

    <code>curl -X POST http://localhost:8089/v1/factoid-add-input/ -d "key=trans&name=FA3EPZYqodgyEGXNMbiZKE5TS2x2J9wF8J9MvPZb52iGR78xMgCb&amount=10000000"
    </code>

    返回

    <code>{"Response":"Success adding Input","Success":true}
    </code>

    添加某项给定地址的输入信息到“trans”交易, Factoids数量 (12)将会以定点表示法列示 (1200000000)

  • Post http://localhost:8089/v1/factoid-add-output/(.*)

    将给定的输出信息添加到特定的交易

    <code>curl -X POST http://localhost:8089/v1/factoid-add-output/ -d "key=trans&name=FA3SXWH3x3HJCjNd3LGrvZnZKJhmdSFKEYd1BgjeHeFPiTvwfw8N&amount=10000000"
    </code>

    返回

    <code>{"Response":"Success adding output","Success":true}
    </code>

    将一项给定地址的输出信息添加到trans交易。Factoids数量 (13)将会以定点表示法列示 (1300000000)

  • Post http://localhost:8089/v1/factoid-add-ecoutput/(.*)

    添加条目信用输出信息到特定的交易。需要注意的是,条目信用信息的固定输出形式是Factoids。具体分配的条目信用的数量取决于交易发生时factoid转换为条目信用的折换率。

    <code>curl -X POST http://localhost:8089/v1/factoid-add-ecoutput/  -d "key=trans&name=EC2ENydo4tjz5rMiZVDiM1k315m3ZanSm6LFDYcQyn5edBXNnrva&amount=10000000"
    </code>

    返回

    <code>{"Response":"Success adding Entry Credit Output","Success":true}
    </code>

    添加某个给定条目信用地址的输出信息到trans交易。假定factoid与条目信用的转换率.001。那么1000条条目信用将转换为1个factoid作为输出信息1000,factoids以固定形式列示(100000000 == 1 factoid)

  • Post http://localhost:8089/v1/factoid-sign-transaction/(.*)

    对特定交易签名.

    <code>http://localhost:8089/v1/factoid-sign-transaction/trans
    </code>

    返回

    <code>{"Response":"Success signing transaction","Success":true}
    </code>

    对trans交易签名.

创建一个JSON对象,用于通过Factomd请求,生成链和显示链。请注意把app改成你自己的EC名字!

<code>$ curl -X POST -H 'Content-Type: application/json' -d '{"ExtIDs":["foo", "bar"], "Content":"Hello Factom!"}' localhost:8089/v1/compose-chain-submit/app
</code>

返回

<code>{"ChainID":"92475004e70f41b94750f4a77bf7b430551113b25d3d57169eadca5692bb043d","ChainCommit":{"CommitChainMsg":"0001521deb5c7891ac03adffe815c64088dc98ef281de1891c0f99a63c55369c1727dc73580cbcc309ee55fa780ce406722b7a074138c994c859e2eda619bbad59b41775b51176464cb77fc08b6ef6767dcc315b4729a871071053cfe4af5a6397f66fbe01042f0b79a1ad273d890287e5d4f16d2669c06c523b9e48673de1bfde3ea2fda309ac92b393f12e48b277932e9af0599071298a24be285184e03d0b79576d1d6473342e48fcb21b2ca99e41b4919ef790db9f5a526b4d150d20e1c2e25237249db2e109"},"EntryReveal":{"Entry":"0092475004e70f41b94750f4a77bf7b430551113b25d3d57169eadca5692bb043d000a0003666f6f000362617248656c6c6f20466163746f6d21"}}
</code>

创建一个JSON对象,用于通过Factomd请求,生成记录和显示记录。请注意把app改成你自己的EC名字!

<code>$ curl -i -X POST -H 'Content-Type: application/json' -d '{"ChainID":"5c337e9010600c415d2cd259ed0bf904e35666483277664d869a98189b35ca81", "ExtIDs":["foo", "bar"], "Content":"Hello Factom!"}' localhost:8089/v1/compose-entry-submit/app
</code>

返回

<code>{"EntryCommit":{"CommitEntryMsg":"0001521dc2d47d32cbdd3fc21889e22cc408ae0b0c120662c0873331cc5ce8ebdc1b6722968ce20179a1ad273d890287e5d4f16d2669c06c523b9e48673de1bfde3ea2fda309ac92f4f4b4d52cc6b228b9b621b1b1969ab46bfa4f80379e14df15e4d48aefa72db6dd835fc7a70d2c79cc9e01eb9ca5be33875439c97c791a1b57f191df03a44008"},"EntryReveal":{"Entry":"005c337e9010600c415d2cd259ed0bf904e35666483277664d869a98189b35ca81000a0003666f6f000362617248656c6c6f20466163746f6d21"}}
</code>
  • Post http://localhost:8089/v1/commit-chain/([^/]+)

    对一个特定的条目信用钥匙以二进制形式签署,并递交至Factomd服务器

  • Post http://localhost:8089/v1/commit-entry/([^/]+)

    在记录链中提交记录

  • Post http://localhost:8089/v1/factoid-submit/(.*)

    向Factom递交交易。该请求需要一个JSON参数。例如:递交一个名为trans的交易:

    <code>curl -X POST http://localhost:8089/v1/factoid-submit/{"Transaction":"trans"}
    </code>

    返回

    <code>{"Response":"Success Submitting transaction","Success":true}
    </code>
  • Get http://localhost:8089/v1/factoid-validate/(.*)

    目前未实现

  • Get http://localhost:8089"/v1/factoid-get-fee/(.*)

    获取每条信用条目对应的Factoid的换算率 例如:

    <code>curl -X GET http://localhost:8089/v1/factoid-get-fee/
    </code>

    返回

    <code>{"Response":"0.006666","Success":true}
    </code>
  • Get http://localhost:8089"/v1/properties/

    获取Factom客户端,fctwallet,factomd和协议的版本号 例如:

    <code>http://localhost:8089/v1/properties/
    </code>

    返回

    <code>{"Response":"Protocol Version:   0.1.5\nfactomd Version:    0.3.4\nfctwallet Version:  0.1.4\n","Success":true}
    </code>
  • Get http://localhost:8089/v1/factoid-get-addresses/

    获取钱包的地址列表 例如:

    <code>curl -X GET http://localhost:8089/v1/factoid-get-addresses/
    </code>
  • Get http://localhost:8089/v1/factoid-get-transactions/

    获取在建过程中的交易以及对应的钥匙 例如:

    <code>curl -X GET http://localhost:8089/v1/factoid-get-transactions/
    </code>
  • Post http://localhost:8089/v1/factoid-get-processed-transactions/(.*)

    如果键入‘all’,会返回所有交易。如果键入一个地址,会返回所有使用该地址作为输入信息,输出信息,或作为信用条目输出的交易,并以文本形式返回。 例如:

    <code>curl -X POST http://localhost:8089/v1/factoid-get-processed-transactions/ -d "address=FA2opZ5tRQET3LNRPfXFR2dWDRD1Sgc1aEYNStTXtkPWQtEvoAiY"
    curl -X POST http://localhost:8089/v1/factoid-get-processed-transactions/ -d "address=<addrname>"
    curl -X POST http://localhost:8089/v1/factoid-get-processed-transactions/ -d "cmd=all"
    </code>
  • Post http://localhost:8089/v1/factoid-get-processed-transactionsj/(.*)

    如果键入‘all’,会返回所有交易。如果键入一个地址,会返回所有使用该地址作为输入信息,输出信息,或作为信用条目输出的交易,并以一串JSON对象的数组返回。 例如:

    <code>curl -X POST http://localhost:8089/v1/factoid-get-processed-transactionsj/ -d "address=FA3RrKWJLQeDuzC9YzxcSwenU1qDzzwjR1uHMpp1SQbs8wH9Qbbr"
    curl -X POST http://localhost:8089/v1/factoid-get-processed-transactionsj/ -d "address=<addrname>"
    curl -X POST http://localhost:8089/v1/factoid-get-processed-transactionsj/ -d "cmd=all"
    </code>