Boomcoin Wiki 1.2.0
- RS Address Format
-
The BOOM API
- Description
- General Notes
-
Account Operations
- Get Account
- Get Account Block Ids
- Get Account Blocks
- Get Account Id
- Get Account Public Key
- Get Account Transaction Ids
- Get Account Transactions
- Get Balance
- Get Unconfirmed Transaction Ids
- Get Unconfirmed Transactions
- Get Subscription
- Get Subscriptions To Account
- Get Account Subscriptions
- Get Pledges By Account
- Get Pledges By Recipient
- Send Money
- Decrypt From
- Send Money Multi
- Send Money Multi Same
- Set Account Info
- Block Operations
- Networking Operations
- Server Information Operations
- Transaction Operations
- Utilities
- Mining
RS Address Format
The well known BOOM addresses of the form:
BOOM-XXXX-XXXX-XXXX-XXXXX
are called Reed-Solomon addresses. This is the default format in the official client. where X is a non-ambiguous number or alphabetic character (the letters O and I are not used; nor are the numbers 1 and 0). Addresses are always prefixed with “BOOM-”, and hyphens are used to separate the address into groups of 4, 4, 4, and then 5 characters. The addresses are NOT case-sensitive.
This form of address improves reliability by introducing redundancy that can detect and correct errors when entering and using BOOM account numbers.
Background
The internal format for BOOM account numbers is a completely numeric 64-bit identifier that is derived from the account's private key. This format is error-prone, since a single mistyped character can result in transactions being unintentionally sent to the wrong account.
Reed-Solomon error-correction codes addresses this issue by adding redundancy to addresses. Reed-Solomon format was chosen because:
the account collision rate is the same as the default address format;
the system's basic error correction can be used to assist users in typing addresses;
some programming languages do not have a native MD5 hashing function, and the Reed-Solomon implementation is simpler than MD5.
Benefits of Reed-Solomon addresses
The chance of a random address collision, using BOOM's implementation of 4 “check-bits”, is 1 in a million (20-bit redundancy).
It allows up to 2 typos in an address to be corrected.
It guarantees that up to 4 typos can be detected.
The address length is always 17 characters, and is always prefixed with “BOOM”. This makes the addresses easily recognizable as belonging to BOOM
Encoding of BOOM Reed-Solomon addresses
Case is not enforced in this format, but for unification all addresses are displayed using upper case.
Addresses are split by dashes into groups of 4 characters and a final group of 5 characters, but this is not enforced during address input.
The old numeric addresses are also recognized and supported for backwards compatibility.
Example RS Addresses:
BOOM-3DH5-DSAE-4WQ7-3LPSE
BOOM-K4G2-FF32-WLL3-QBGEL
Technical Details
The first and most important rule is that no error-correction scheme is infallible: You cannot rely on error correction, period.
The problem is somewhat counter-intuitive: either you can do a simple yes/no check of address validity, which will give you one in a million collision, or you can try and correct errors. You cannot do both.
The problem here is that the Reed-Solomon algorithm is only guaranteed to correct up to 2 errors. If there are more than 2 errors present in an address entry, it will produce false positives with a probability of around 10% and transactions will still be sent to incorrect addresses.
Think of the algorithm as error-guessing, instead, to assist users with spotting errors.
Reed-Solomon (RS) addresses for BOOM are encoded as follows:
Take the original 64-bit account ID, add 1 zero bit to get 65 and then split it into thirteen 5-bit “symbols” (65 / 5 = 13).
Order the symbols from lowest bit to highest bits, in little-endian order, i.e. bits 0-4, 5-9, 10-14, etc. up to 60-64.
Append 4 symbols of parity (20 bits), produced by the Reed-Solomon encoding of our 13 symbols from step one (which are left untouched). This produces a 13 + 4 = 17 symbol codeword.
Scramble the codeword symbols in a predefined order and encode them 1-to-1 with an alphabet of 32 characters, splitting them into groups by dashes.
The BOOM API
The documentation here refers to the version or later.
Description
The BOOM API allows interaction with BOOM nodes using HTTP requests to port 9925. Most HTTP requests can use either the GET or POST methods, but some API calls accept only the POST method for security reasons. Responses are returned as JSON objects.
Each API call is documented below, with definitions given for HTTP request parameters and JSON response fields, followed by an example:
The JSON response fields are each followed by one of S for string, A for array, O for object, N for number or B for boolean.
In the examples, the BOOM node is represented as localhost and requests and responses are formatted for easy reading; line breaks and spaces are not actually used except in some parameter values. All requests are in URL format which implies the HTTP GET method. When GET is allowed, the URL can be entered into a browser URL field but proper URL encoding is usually required (e.g., spaces in a parameter value must be replaced by + or %20). Otherwise, the URL should be used as a guide to preparing an HTTP POST request using cURL, for example. For specific API calls, use the GET url http://localhost:9925/boom?requestType=specificRequestType.
General Notes
Genesis Block
Many API requests make reference to the Genesis Block.
Flexible Account IDs
All API requests that require an account ID accept either an account number or the corresponding Reed-Solomon address.
Quantity Units BOOM, NQT and QNT
The BOOM system has a currency BOOM used to quantify value in the system. Like all currencies, BOOM circulates in the system, moving from one user to another by payments and purchases. Also, a small fee is required for every transaction, including those in which no BOOM is transfered, such as simple messages. This fee goes to the owner of the node that forges (generates) the new block containing the transaction that is accepted onto the blockchain.
Yet internally, the currency is still stored in integer form in units of NQT or NxtQuant, where 1 BOOM = 108 NQT. All parameters and fields in the API involving a quantity of BOOM are denominated in units of NQT, for example feeNQT. The only exception is the field effectiveBalanceNXT, used in forging calculations.
Account Operations
Get Account
Get account information given an account ID.
Response:
Example:
http://localhost:9925/boom?requestType=getAccount&account=BOOM-YSVC-KPHV-E6ZV-H8KDJ
{
"balanceNQT":"96559475816",
"unconfirmedBalanceNQT":"96559475816",
"effectiveBalanceNXT":"96559475816",
"forgedBalanceNQT":"3571572465000",
"guaranteedBalanceNQT":"96559475816",
"account":"17883273558973440874",
"accountRS":"BOOM-YSVC-KPHV-E6ZV-H8KDJ",
"publicKey":"c9b4794b717f06eeba1cfbb21c77f71259d3f6917926d5c8a6f012930e4e7d1a",
"pledgesIn":"18000000",
"pledgesOut":"0",
"requestProcessingTime":7
}
Get Account Block Ids
Get the block IDs of all blocks forged (generated) by an account in reverse block height order.
Response:
Example:
http://localhost:9925/boom?requestType=getAccountBlockIds&account=BOOM-AFCQ-DYVA-D6GF-3637Q
{
"blockIds":[
"8799529696382042849",
"4946002162803152401",
"4252331480860781686",
"6976579989373408106",
"17810217352242760037",
"9643593925112963538",
"10806828142300029794",
"16300535357735590310",
"14283686032777508361",
"5229979711424389478",
"878950721956582925"
],
"requestProcessingTime":1
}
Get Account Blocks
Get all blocks forged (generated) by an account in reverse block height order.
Response:
Example:
http://localhost:9925/boom?requestType=getAccountBlocks&account=3410107253310062948
{
"blocks":[
{
"block":"3055966943959970998",
"height":4260,
"generator":"14049121634612135112",
"generatorRS":"BOOM-ZK8A-Q5UN-N9MX-E36Y7",
"generatorPublicKey":"d979022e3fa0f29dafaec4434f8cda8e74edf209ac76a36e87ac73bd39a7c010",
"nonce":"9227902102096637864",
"scoopNum":684,
"timestamp":155046460,
"numberOfTransactions":3,
"totalAmountNQT":"13237731069",
"totalFeeNQT":"38000000",
"blockReward":"200",
"payloadLength":674,
"version":1000,
"baseTarget":"44410",
"ratio":20,
"signer":"17883273558973440874",
"previousBlock":"15898862343651754015",
"nextBlock":"10513882831867672519",
"payloadHash":"e2efe070a3a3a79fb7d53bf768e2b1951d63af96c73e6f30e4beacb15ed2e113",
"generationSignature":"ae799d90e766de8d866ac24253202b0745d591168c80a1fa23f0df73925b0468",
"previousBlockHash":"1f8032d6101ba4dc57570d4864bbcfd2478b2a42e06173c2701146e5b1fcb2e1",
"blockSignature":"a84492ac167171150333540aa0ead43ea088073ab873b84a79f446cbd5ce960646049dbebec59a87824949bfdc99870814e22b60ba7ecfacac135346f9fd39b1",
"transactions":[
"2265751142918316099",
"2878828757846616082",
"3205717076566328648"
]
}
],
"requestProcessingTime":4
}
Get Account Id
Get an account ID given a secret passphrase or public key. POST only.
Response:
Example:
http://localhost:9925/boom?requestType=getAccountId&secretPhrase=IWontTellYou
{
"accountRS": "BOOM-L6FM-89WK-VK8P-FCRBB",
"publicKey": "57fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c",
"requestProcessingTime": 0,
"account": "15323192282528158131"
}
Get Account Public Key
Get the public key associated with an account ID.
Response:
Example:
http://localhost:9925/boom?requestType=getAccountPublicKey&account=BOOM-7WHR-ZHDY-7MK4-7F4SK
{
"publicKey":"b9a14a5f79c89cb52f81d537653a05101fe49d8b446b6e9c61146185ba46a846",
"requestProcessingTime":0
}
Get Account Transaction Ids
Get the transaction IDs associated with an account in reverse block timestamp order.
Note: Refer to Get Constants for definitions of types and subtypes
Response:
Example:
http://localhost:9925/boom?requestType=getAccountTransactionIds&account=BOOM-7WHR-ZHDY-7MK4-7F4SK
{
"transactionIds":[
"2010797302436823195",
"16903534890576263592",
"14433052584687389008",
"17994267596325488171",
"7775647821360000620",
"15060896189234484047",
"7193571944223157430"
],
"requestProcessingTime":61
}
Get Account Transactions
Get the transactions associated with an account in reverse block timestamp order. T
Note: Refer to Get Constants for definitions of types and subtypes
Response:
Example:
http://localhost:9925/boom?requestType=getAccountTransactions&account=BOOM-7WHR-ZHDY-7MK4-7F4SK
{
"transactions":[
{
"type":0,
"subtype":0,
"timestamp":154949089,
"deadline":1440,
"senderPublicKey":"acc0b21f6e4b3574cdfa843027e9383f1f5d31c37057bae7064a4c7bd5ff7742",
"recipient":"6404204414174949879",
"recipientRS":"BOOM-7WHR-ZHDY-7MK4-7F4SK",
"amountNQT":"1",
"feeNQT":"10000000",
"signature":"c7d25dd05576f4d84f6fe02d7e29cde6eb64699895f1b7cfd83c3f5743093e01837525570592d6b2cdac4f20681dbe847cb09d571dde51f6d046e499038745fa",
"signatureHash":"2baad54f17e19c7348f06606f29c2e11969389b38b2be660156dc7134f61d36d",
"fullHash":"9b800f2f7ec9e71b2bd447d92a3128147252a2fcb69a82ca2f38baae362e1766",
"transaction":"2010797302436823195",
"sender":"10422094625676625815",
"senderRS":"BOOM-F3WR-UZPH-QZNX-BRPA3",
"height":3858,
"version":1,
"ecBlockId":"4284953427378190767",
"ecBlockHeight":3845,
"block":"4791323801468120064",
"confirmations":455,
"blockTimestamp":154949148
},
{
"type":20,
"subtype":0,
"timestamp":154936624,
"deadline":1440,
"senderPublicKey":"b9a14a5f79c89cb52f81d537653a05101fe49d8b446b6e9c61146185ba46a846",
"recipient":"6857767962801888750",
"recipientRS":"BOOM-SRHG-N59F-732S-7HXCY",
"amountNQT":"0",
"feeNQT":"10000000",
"signature":"7f2ac8685d714b4e50ed27c3ee1c00c2bf744bab7755757a6ce188eea374fa0c426f765841f52530f77fb6cfe90f9e561c354c99e00a495e6aa141741d4f2678",
"signatureHash":"c8fa06c771ca01eb691d2c18e5de7c6914e72d1143b2bc10a32c0950b99b594c",
"fullHash":"b62ca3f191b3d4635e95c60006bf404bc07338aeff51ec6e44f71e22aec4787e",
"transaction":"7193571944223157430",
"attachment":{
"version.RewardRecipientAssignment":1
},
"sender":"6404204414174949879",
"senderRS":"BOOM-7WHR-ZHDY-7MK4-7F4SK",
"height":3800,
"version":1,
"ecBlockId":"12224793954800821793",
"ecBlockHeight":3788,
"block":"4896811888090197469",
"confirmations":513,
"blockTimestamp":154936727
}
],
"requestProcessingTime":3
}
Get Balance
Get the balance of an account.
Request:
Response:
Example:
http://localhost:9925/boom?requestType=getBalance&account=BOOM-7WHR-ZHDY-7MK4-7F4SK
{
"balanceNQT":"79253291852",
"unconfirmedBalanceNQT":"79253291852",
"effectiveBalanceNXT":"79253291852",
"forgedBalanceNQT":"8006205000",
"guaranteedBalanceNQT":"79253291852",
"requestProcessingTime":1
}
Get Unconfirmed Transaction Ids
Get a list of unconfirmed transaction IDs associated with an account.
Request:
Response:
Example:
http://localhost:9925/boom?requestType=getUnconfirmedTransactionIds&account=BOOM-7WHR-ZHDY-7MK4-7F4SK
{
"requestProcessingTime": 0,
"unconfirmedTransactionIds": []
}
Get Unconfirmed Transactions
Get a list of unconfirmed transactions associated with an account.
Response:
Example:
http://localhost:9925/boom?requestType=getUnconfirmedTransactions
{
"unconfirmedTransactions":[
{
"type":0,
"subtype":0,
"timestamp":154981675,
"deadline":1440,
"senderPublicKey":"199cfd857230861205792f2b430a5123dbf8ce5e24659504f0ae01d9b603c406",
"recipient":"14714824533976319930",
"recipientRS":"BOOM-T3XU-YFZX-VXF4-EGEFS",
"amountNQT":"1008519052",
"feeNQT":"1000000",
"signature":"a86cd9bf44e1cadcbe351dfc21745e9d61af50964e708937aa5c6f09d7ab7c0a66471161a8edb5c411c6ed5b5334d35ecc9f7b1e9f96237a9306455cdef3bd81",
"signatureHash":"247913c678ca1296ec585d6d4408c667dc7bcd77769acc3148e073da52afd6a4",
"fullHash":"1259140e18e807deb9e984888f633eddb5c332fdf445bc77012388e082a3704d",
"transaction":"15999011391270050066",
"sender":"15424301399855208330",
"senderRS":"BOOM-W7WC-EVDG-SEXS-F2K5E",
"height":3984,
"version":1,
"ecBlockId":"16306614143076131473",
"ecBlockHeight":3978
},
{
"type":0,
"subtype":1,
"timestamp":155033190,
"deadline":1440,
"senderPublicKey":"c9b4794b717f06eeba1cfbb21c77f71259d3f6917926d5c8a6f012930e4e7d1a",
"amountNQT":"3871591128",
"feeNQT":"25000000",
"signature":"aba9a7e4b4248dd80eed11e47bd559d01c1e168f38041749bd7c3eb21cf02f0bfa8a2d6cce47babe1b45c06852ff5da4d0f1a72a4017eee9e966d47c1f89cf86",
"signatureHash":"7a55c88fa4daa13f73661ff1ab61c17e327033e0836b94ba741bacbae8f4f1d8",
"fullHash":"3ca37f07f3bd30ecbd65d49157d16973ef5ba921b404d6865b877113098195db",
"transaction":"17019311843333612348",
"attachment":{
"version.MultiOutCreation":1,
"recipients":[
[
"4759689779345000051",
"535568406"
],
[
"7296886423795050588",
"506393144"
],
[
"8259382783031909422",
"510740851"
],
[
"9277581169677799893",
"636447363"
],
[
"10991687179903131845",
"667558030"
],
[
"15762905391080675799",
"510103166"
],
[
"17185412330837304402",
"504780168"
]
]
},
"sender":"17883273558973440874",
"senderRS":"BOOM-YSVC-KPHV-E6ZV-H8KDJ",
"height":4201,
"version":1,
"ecBlockId":"7716331846246720015",
"ecBlockHeight":4192
}
],
"requestProcessingTime":1
}
Get Subscription
Response:
Example:
http://localhost:9925/boom?requestType=getSubscription&subscription=13721874590196751209
{
"senderRS": "BOOM-2RN8-FSU8-P64Q-5AL9C",
"sender": "3827576371473833606",
"amountNQT": "500000000",
"recipientRS": "BOOM-JDMH-EZQC-UWY4-EXXFU",
"recipient": "14787496155544039023",
"id": "13721874590196751209",
"timeNext": 128778762,
"requestProcessingTime": 0,
"frequency": 3600
}
Get Subscriptions To Account
Response:
Example:
http://localhost:9925/boom?requestType=getSubscriptionsToAccount&account=13721874590196751209
{
"subscriptions": [
{
"senderRS": "BOOM-2RN8-FSU8-P64Q-5AL9C",
"sender": "3827576371473833606",
"amountNQT": "500000000",
"recipientRS": "BOOM-JDMH-EZQC-UWY4-EXXFU",
"recipient": "14787496155544039023",
"id": "13721874590196751209",
"timeNext": 128778762,
"frequency": 3600
}
],
"requestProcessingTime": 2
}
Get Account Subscriptions
Response:
Example:
http://localhost:9925/boom?requestType=getAccountSubscriptions&account=13721874590196751209
{
"subscriptions": [
{
"senderRS": "BOOM-2RN8-FSU8-P64Q-5AL9C",
"sender": "3827576371473833606",
"amountNQT": "500000000",
"recipientRS": "BOOM-JDMH-EZQC-UWY4-EXXFU",
"recipient": "14787496155544039023",
"id": "13721874590196751209",
"timeNext": 128778762,
"frequency": 3600
}
],
"requestProcessingTime": 2
}
Get Pledges By Account
Response:
Example:
http://localhost:9925/boom?requestType=getPledgesByAccount&account=15907804135373748590
[
{
"account":"BOOM-4GDG-LHUR-F2ML-FZYJT",
"order":"1090309458415790249",
"amountNQT":"298000000000",
"recipient":"BOOM-2DCH-SLL9-XHPZ-6WMFC"
}
]
Get Pledges By Recipient
Response:
Example:
http://localhost:9925/boom?requestType=getPledgesByRecipient&recipient=15907804135373748590
[
{
"account":"BOOM-X3LR-5EDF-UR5J-7VJBF",
"order":"8786499613354783688",
"amountNQT":"2100000000",
"recipient":"BOOM-4GDG-LHUR-F2ML-FZYJT"
},
{
"account":"BOOM-APUE-SRY9-YLK4-G4XAZ",
"order":"4672739861669447617",
"amountNQT":"1410000000",
"recipient":"BOOM-4GDG-LHUR-F2ML-FZYJT"
}
]
Send Money
Send BOOM to an account. POST only.
Response:
Example:
http://localhost:9925/boom?requestType=sendMoney&recipient=BOOM-GBFG-HVQ4-8AMM-GPCWR&secretPhrase=IWontTellYou&deadline=1440&feeNQT=10000000&amountNQT=1500000000
{
"signatureHash": "b6bb90bac0d529d9ebc6771089f389c976db2a67d76867f7c9d2e1b90e00358a",
"unsignedTransactionBytes": "001092812d07180057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93cae2527ec7e55f1eb00e1f5050000000000e1f505*",
"transactionJSON": {
"senderPublicKey": "57fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c",
"signature": "3b709a56a9a2308b2364cdb260cc8b08126b8ed13cfe891aa817c28760b0e90f108680db998938fd4747390a0ed9b3b3e25674b849e583dce011155f95ecaa3a",
"feeNQT": "100000000",
"type": 0,
"fullHash": "808d5c32b12f4d4b963404c19523b6391ddf7a04a96ec4a495703aeead76c6ff",
"version": 1,
"ecBlockId": "16622227543717857480",
"signatureHash": "b6bb90bac0d529d9ebc6771089f389c976db2a67d76867f7c9d2e1b90e00358a",
"senderRS": "BOOM-L6FM-89WK-VK8P-FCRBB",
"subtype": 0,
"amountNQT": "100000000",
"sender": "15323192282528158131",
"recipientRS": "BOOM-GBFG-HVQ4-8AMM-GPCWR",
"recipient": "17001464071916561838",
"ecBlockHeight": 497841,
"deadline": 24,
"transaction": "5426045564151958912",
"timestamp": 120422802,
"height": 2147483647
},
"broadcasted": true,
"requestProcessingTime": 4,
"transactionBytes": "001092812d07180057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93cae2527ec7e55f1eb00e1f5050000000000e1f505*",
"fullHash": "808d5c32b12f4d4b963404c19523b6391ddf7a04a96ec4a495703aeead76c6ff",
"transaction": "5426045564151958912"
}
Decrypt From
Decrypt an AES-encrypted message.
Request:
- requestType is decryptFrom
- secretPhrase is the secret passphrase of the recipient
- account is the account ID of the recipient
- data is AES-encrypted data
- nonce is the unique nonce associated with the encrypted data
- decryptedMessageIsText is false if the decrypted message is a hex string, otherwise the decrypted message is text (optional)
- uncompressDecryptedMessage is false to prevent gzip uncompression after decryption (optional)
Response:
decryptedMessage (S) is the decrypted message
requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=decryptFrom&account=16922903237994405232&data=d5a1958d12ce96ce30dbce5b6c8ead7ecbc0f59d857dc8e8fbeec10ae440e0e74e9120fef3b0fa586d4c63fde0f289340e709b30ae528e3c2d740b11e3ae3fdb5e5d5c63f724cf16157c75dabec31eaf&nonce=7cefa6f66d5b71604e2ef56a18319b3f48a38e8aa5cf610369b294f1d40e0f8e&decryptedMessageIsText=true&secretPhrase=IWontTellYou
{
"decryptedMessage": "This is a message encrypted using \"encryptTo\".",
"requestProcessingTime": 2
}
Send Money Multi
Send individual amounts of BOOM to up to 64 recipients. POST only.
Response:
Example:
http://localhost:9925/boom?requestType=sendMoneyMulti&secretPhrase=IWontTellYou&recipients=96033286118906220%3A150000%3B150316338095331624%3A150000&feeNQT=2205000&deadline=1440
{
"transaction":"602619452326557637",
"fullHash":"45a8017e2cc0698e470639cc00a79ae09cebadc58b90cf7560d6548e868e5",
"transactionBytes":"001187103e09a00527fe1a36ed5228548d74d9e401e6b6d085e93ffe309e12a0000000000000000e09304000000000048a52100000000000000000000000000000000000000000000000000000000000000000000000000b7aea4a9407a45288c40fd3b659c8d0a521070637d7cbf84e5a0006c8c6f6c0e55242df7c91d6ea00f322483c695728a1e41de6d1ecdf7e2293dec2f2548971900000000d41000008ea2511033fe6e8a01026cd0e5091f9f530df04902000000000028f5bb4335049bd0f049020000000000",
"signatureHash":"0bc375677b0f1e1ed7ef36482d22107ffc7874b5190be58f335e8786760adf",
"numberPeersSentTo":53,
"broadcasted":true,
"unsignedTransactionBytes":"00118710300527fe1c26407c5b12b87b45a36ed5228548d74d9e401e6b6d085e93ffe309e12a0000000000000000e09304000000000048a521000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d41000008ea2511033fe6e8a01026cd0e5091f9f530df04902000000000028f5bb4335049bd0f049020000000000",
"transactionJSON":{
"type":0,
"subtype":1,
"timestamp":145062407,
"deadline":1440,
"senderPublicKey":"27fe1c26c5b12b87b45a36ed5228548d74d9e401e6b6d085e93ffe309e12a",
"amountNQT":"900000",
"feeNQT":"2205000",
"signature":"b7aea4a9407a88c40fd3b659c8d0a521070637d7cbf84e5a0006c8c6f6c0e55242df7c91d6ea00f322483c695728a1e41de6d1ecdf7e2293dec2f25489719",
"signatureHash":"0bc375677acb0f1e1ed7ef36482d22107ffc7874b5190be58f335e8786760adf",
"fullHash":"45a8017e2cc0698e47074f639cc00a79ae09cebadc58b90cf7560d6548e868e5",
"transaction":"135161944523265517637",
"attachment":{
"version.MultiOutCreation":1,
"recipients":[
[
"96033286118906220",
"150000"
],
[
"150316338095331624",
"750000"
]
]
},
"sender":"2018618054236133388",
"senderRS":"BOOM-YQ2E-FMFY-338S-3LW2S",
"height":2147593647,
"version":1,
"ecBlockId":"9975185519941200014",
"ecBlockHeight":1028
},
"requestProcessingTime":192
}
Send Money Multi Same
Send the same amount of BOOM to up to 128 recipients. POST only.
Response:
Example:
http://localhost:9925/boom?requestType=sendMoneyMultiSame&secretPhrase=IWontTellYou&recipients=96033286118906220%3B150316338095331624&amountNQT=1000000&feeNQT=1470000&deadline=1440
{
"transaction":"15033458615953323024",
"fullHash":"1044fe4081f4d3d01340f66f31bdd472501d557bc83848b73c1cacefa748dfcd1",
"transactionBytes":"001298113e09a00527fb12b87b45a36ed5228548d74d9e401e6b6d085e93ffe309e12a000000000000000080841e0000000000306e160000000000000000000000000000000000000000000000000000000000000000000000000048fad5c14b0cd1535bbfb7185c2b5f3143bdae4f44905e04e12db03f753da102f94d17f7941bf8219b75270ee61875d491898424d921f8d9a0f89125c4fe216200000000d6100000fb159090c452f7fd01026cd0e5091f9f530d28f5bb4335049bd0",
"signatureHash":"3e035fa1f06bc1fa1b9824f036dcaa8f1b373a5e27432dab27806d355",
"numberPeersSentTo":53,
"broadcasted":true,
"unsignedTransactionBytes":"001298113e01c26407c5b12b87b45a36ed5228548d74d9e401e6b6d085e93ffe309e12a000000000000000080841e0000000000306e16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d6100000fb159090c452f7fd01026cd0e5091f30d28f5bb4335049bd0",
"transactionJSON":{
"type":0,
"subtype":2,
"timestamp":145062680,
"deadline":1440,
"senderPublicKey":"27fe1c25b12b87b45a36ed5228548d74d9e401e6b6d085e93ffe309e12a",
"amountNQT":"2000000",
"feeNQT":"1470000",
"signature":"48fad5c14bbbfb7185c2b5f3143bdae4f44905e04e12db03f753da102f94d17f7941bf8219b75270ee61875d491898424d921f8d9a0f89125c4fe2162",
"signatureHash":"3e035fa1ff46e31e8a1b9824f036dcaa8f1b373a5e27432dab27806d355",
"fullHash":"1044fe4081f4d3d0031bdd472501d557bc83848b73c1cacefa748dfcd1",
"transaction":"150476396953323024",
"attachment":{
"version.MultiSameOutCreation":1,
"recipients":[
"96033286118906220",
"150316338095331624"
]
},
"sender":"2018618054236133388",
"senderRS":"BOOM-YQ2E-FMFY-338S-3LW2S",
"height":21483647,
"version":1,
"ecBlockId":"18318661535729403",
"ecBlockHeight":1010
},
"requestProcessingTime":1153
}
Set Account Info
Set account information. POST only.
Response:
Example:
http://localhost:9925/boom?requestType=setAccountInfo&name=Exam&description=Example&secretPhrase=IWontTellYou&deadline=1440&feeNQT=10000000
{
"signatureHash": "00e5694c213c978045fc32125092a1f3b16e6c5bf4d1d24c51005466be29f14b",
"unsignedTransactionBytes": "0115c1832d07180057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c0000000000000000000000000000000000e1f505*",
"transactionJSON": {
"senderPublicKey": "57fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c",
"signature": "9b2634d7f439bf0c71341511a3efb202f744ec7f1b60673d07965bb297b4060d27bed164bf2611b738da1df34cd15a44458bfed2f6e78c94707af11da46f5044",
"feeNQT": "100000000",
"type": 1,
"fullHash": "7ace7428ff55c4c5963d828f0cd210be4c988b482b2930b73c80c7fe55c19af5",
"version": 1,
"ecBlockId": "4725767517890678156",
"signatureHash": "00e5694c213c978045fc32125092a1f3b16e6c5bf4d1d24c51005466be29f14b",
"attachment": {
"name": "Exam",
"description": "Example",
"version.AccountInfo": 1
},
"senderRS": "BOOM-L6FM-89WK-VK8P-FCRBB",
"subtype": 5,
"amountNQT": "0",
"sender": "15323192282528158131",
"ecBlockHeight": 497844,
"deadline": 24,
"transaction": "14250609675290857082",
"timestamp": 120423361,
"height": 2147483647
},
"broadcasted": true,
"requestProcessingTime": 9,
"transactionBytes": "0115c1832d07180057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c0000000000000000000000000000000000e1f505*",
"fullHash": "7ace7428ff55c4c5963d828f0cd210be4c988b482b2930b73c80c7fe55c19af5",
"transaction": "14250609675290857082"
}
Block Operations
Get Block
Get a block object given a block ID or block height.
Request:
- requestType is getBlock
- block is the block ID (optional)
- height is the block height (optional if block provided)
- timestamp is the timestamp (in seconds since the genesis block) of the block (optional if height provided)
- includeTransactions is true to include transaction details (optional)
- includeExecutedPhased is true to include approved and executed phased transactions (optional)
- requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)
- requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)
- Note: block overrides height which overrides timestamp.
Response:
- previousBlockHash (S) is the 32-byte hash of the previous block
- payloadLength (N) is the length (in bytes) of all transactions included in the block
- totalAmountNQT (S) is the total amount (in NQT) of the transactions in the block
- generationSignature (S) is the 32-byte generation signature of the generating account
- generator (S) is the generating account number
- generatorPublicKey (S) is the 32-byte public key of the generating account
- baseTarget (S) is the base target for the next block generation
- payloadHash (S) is the 32-byte hash of the payload (all transactions)
- generatorRS (S) is the Reed-Solomon address of the generating account
- nextBlock (S) is the next block ID
- numberOfTransactions (N) is the number of transactions in the block
- blockSignature (S) is the 64-byte block signature
- transactions (A) is an array of transaction IDs or transaction objects (if includeTransactions provided, refer to Get Transaction for details)
- executedPhasedTransactions (A) is an array of transaction IDs or transaction objects (if includeExecutedPhased provided, refer to Get Transaction for details)
- version (N) is the block version
- totalFeeNQT (S) is the total fee (in NQT) of the transactions in the block
- previousBlock (S) is the previous block ID
- cumulativeDifficulty (S) is the cumulative difficulty for the next block generation
- block (S) is the block ID
- height (N) is the zero-based block height
- timestamp (N) is the timestamp (in seconds since the genesis block) of the block
- lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)
- requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getBlock&block=14308575231435869031
{
"block":"14308575231435869031",
"height":4329,
"generator":"6346744767648806255",
"generatorRS":"BOOM-FFDH-RPFW-VQUC-7C37J",
"generatorPublicKey":"0f9588c954de02e5c0c3b4751b7b560978bfc494b10efddc95ae61379db19731",
"nonce":"9817590999",
"scoopNum":1630,
"timestamp":155063325,
"numberOfTransactions":1,
"totalAmountNQT":"3974000000",
"totalFeeNQT":"3000000",
"blockReward":"200",
"payloadLength":176,
"version":1000,
"baseTarget":"53456",
"ratio":20,
"signer":"15424301399855208330",
"previousBlock":"13470170283741071908",
"payloadHash":"9119a9250ae30f572b6cc2386ccceae1576ad1be559743fdaf858082cab0e5da",
"generationSignature":"a831633196d735d6f30517c5abb47af2f4040af0f00554a6ffec2a6758c74801",
"previousBlockHash":"24ca684a81a8efba26e2d2a60432a4c1567d256c9e8d5742e9ebd856c20c2ba6",
"blockSignature":"3c3afb6029927a57812be1f3cf703d8b1054cec303498f33153fafe5a2110e0bcbea78a0de599c877a0a244168f226b1af6d5d636450dfa074fce8ff85950cff",
"transactions":[
"15809430866740991133"
],
"requestProcessingTime":0
}
Get Block Id
Get a block ID given a block height.
Request:
- requestType is getBlockId
- height is the block height
- requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)
- requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)
Response:
- block (S) is the block ID
- lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)
- requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getBlockId&height=1027
{
"block":"16431457515925878804",
"requestProcessingTime":81
}
Get Blocks
Get blocks from the blockchain in reverse block height order.
Request:
- requestType is getBlocks
- timestamp is the earliest block (in seconds since the genesis block) to retrieve (optional)
- firstIndex is first block to retrieve (optional, default is zero or the last block on the blockchain)
- lastIndex is the last block to retrieve (optional, default is firstIndex + 99)
- includeTransactions is true to include transaction details (optional)
- includeExecutedPhased is true to include approved and executed phased transactions (optional)
- requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)
- requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)
Response:
- blocks (A) is an array of blocks retrieved (refer to Get Block for details)
- lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)
- requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getBlocks&lastIndex=1
{
"blocks":[
{
"block":"16966357253152263101",
"height":4337,
"generator":"8291100081623585410",
"generatorRS":"BOOM-7NN4-M4F8-2P7X-99Z58",
"generatorPublicKey":"40cdd406d82554606c1f88c61f696669c7e8e187f95f6a7a0e4846dcb911380e",
"nonce":"1768385662405003669",
"scoopNum":3520,
"timestamp":155065089,
"numberOfTransactions":2,
"totalAmountNQT":"6616409809",
"totalFeeNQT":"28000000",
"blockReward":"200",
"payloadLength":434,
"version":1000,
"baseTarget":"48812",
"ratio":20,
"signer":"17883273558973440874",
"previousBlock":"5959557247348141246",
"payloadHash":"d1e45061cf082f4eb3ef39c7485ba98665f5228bfb506a0b19609bc30c179739",
"generationSignature":"476c80f291c570e98f5a568ee4ba6249d78bfe55cbac9a5e415a33d94ed62ce0",
"previousBlockHash":"be6ccacabd99b4525bfe54aa251f596a4d52baf026c7691186efb4a9a43de2d6",
"blockSignature":"841819c9e28e20ddb0b10b8c321d66a5484f439021cca62489c69448a505b6071bac125b16e38e0f1d41fd48f445f09baea6469abfdf1e85ded62a8afc0e01a4",
"transactions":[
"14849140841703722504",
"7030966812750513247"
]
},
{
"block":"5959557247348141246",
"height":4336,
"generator":"11778286511296504545",
"generatorRS":"BOOM-NSR3-7QAB-BR7Q-C39X8",
"generatorPublicKey":"311afb506ea231263c8e7b220708820417bf26ab369d8cbb0e56badb2a3fe400",
"nonce":"7818020319125796990",
"scoopNum":716,
"timestamp":155064935,
"numberOfTransactions":1,
"totalAmountNQT":"3985425069",
"totalFeeNQT":"1000000",
"blockReward":"200",
"payloadLength":176,
"version":1000,
"baseTarget":"48569",
"ratio":20,
"signer":"17883273558973440874",
"previousBlock":"3034079929286377426",
"nextBlock":"16966357253152263101",
"payloadHash":"7a8d0456071330f7dde604f2a3c10d82e6e53b2ceb5dc6e4c841a16cd10612c1",
"generationSignature":"9d15d9fe00806a90eaad6d6ca5d940fc15113b1c1569093a4eb8359af8c6c847",
"previousBlockHash":"d2bf41d59e371b2a88cd0cd84c84a9022dde6634db7be23ce03ba31ad8c35aae",
"blockSignature":"2fd971c89b2652aeb86f09a140e64508b51b403515cd4cd788c44584f8f12e09962ba364dda94e1d03a5833f16fd2a39c6a42dc73b3cd0d28416d060592d2b27",
"transactions":[
"5672946647101852470"
]
}
],
"requestProcessingTime":68
}
Get EC Block
Get Economic Cluster block data.
Request:
- requestType is getECBlock
- timestamp is the timestamp (in seconds since the genesis block) of the EC block (optional, default (or zero) is the current timestamp)
- requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)
- requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional) Note: If timestamp is more than 15 seconds before the timestamp of the last block on the blockchain, errorCode 4 is returned.
Response:
- ecBlockHeight (N) is the EC block height
- ecBlockId (S) is the EC block ID
- timestamp (N) is the timestamp (in seconds since the genesis block) of the EC block
- lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)
- requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getECBlock
{
"ecBlockId":"3311174820071383231",
"ecBlockHeight":4326,
"timestamp":155065466,
"requestProcessingTime":76
}
Networking Operations
Get My Info
- Get hostname and address of the requesting node.
Request:
- requestType is getMyInfo
Response:
- host (S) is the node hostname
- address (S) is the node address
- requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getMyInfo
{
"host":"127.0.0.1",
"address":"127.0.0.1",
"requestProcessingTime":0
}
Get Peer
Get information about a given peer.
Request:
- requestType is getPeer
- peer is the IP address or domain name of the peer (plus optional port)
Response:
- hallmark (S) is the hex string of the peer's hallmark, if it is defined
- downloadedVolume (N) is the number of bytes downloaded by the peer
- address (S) the IP address or DNS name of the peer
- weight (N) is the peer's weight value
- uploadedVolume (N) is the number of bytes uploaded by the peer
- version (S) is the version of the software running on the peer
- platform (S) is a string representing the peer's platform
- lastUpdated (N) is the timestamp (in seconds since the genesis block) of the last peer status update
- blacklisted (B) is true if the peer is blacklisted
- services (A) is an array of strings with the services the node provides
- blacklistingCause (S) is the cause of blacklisting (if blacklisted is true)
- announcedAddress (S) is the name that the peer announced to the network (could be a DNS name, IP address, or any other string)
- application (S) is the name of the software application, typically BRS
- state (N) defines the state of the peer: 0 for NON_CONNECTED, 1 for CONNECTED, or 2 for DISCONNECTED
- shareAddress (B) is true if the address is allowed to be shared with other peers
- inbound (B) is true if the peer has made a request to this node
- inboundWebSocket (B) is true if an inbound websocket has been established from this node
- outboundWebSocket (B) is true if an outbound websocket has been established to this node
- lastConnectAttempt (B) is the timestamp (in seconds since the genesis block) of the last connection attempt to the peer
- requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getPeer&peer=176.33.72.52
{
"state":2,
"announcedAddress":"176.33.72.52",
"shareAddress":true,
"downloadedVolume":410330,
"uploadedVolume":248153,
"application":"BoomCore",
"version":"v1.0.0",
"platform":"PC",
"blacklisted":false,
"lastUpdated":155033291,
"requestProcessingTime":0
}
Get Peers
Get a list of peer IP addresses.
Request:
- requestType is getPeers
- active is true for active (not NON_CONNECTED) peers only (optional, if true overrides state)
- state is the state of the peers, one of NON_CONNECTED, CONNECTED, or DISCONNECTED (optional)
- includePeerInfo is true to include peer detail as in Get Peer
- service to filter on a specific service
- Note: If neither active nor state is specified, all known peers are retrieved.
Response:
peers (A) is an array of peer addresses requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getPeers&active=true
{
"peers":[
"123.156.28.51",
"119.3.178.137",
"121.50.170.207",
"113.231.175.35",
"47.156.1.249",
"122.234.118.156",
"221.228.168.206",
"59.63.200.18",
"123.132.232.10"
],
"requestProcessingTime":0
}
Server Information Operations
Get Blockchain Status
Get the blockchain status.
Request:
requestType is getBlockchainStatus
Response:
- currentMinRollbackHeight (N) is the current minimum rollback height
- numberOfBlocks (N) is the number of blocks in the blockchain (height + 1)
- isTestnet (B) is true if the node is connected to testnet, false otherwise
- includeExpiredPrunable (B) is the value of the nxt.includeExpiredPrunable property
- requestProcessingTime (N) is the API request processing time (in millisec)
- version (S) is the application version
- maxRollback (N) is the value of the nxt.maxRollback property
- lastBlock (S) is the last block ID on the blockchain
- application (S) is application name, typically BRS
- isScanning (B) is true if the blockchain is being scanned by the application, false otherwise
- isDownloading (B) is true if a download is in progress, false otherwise; true when a batch of more than 10 blocks at once has been downloaded from a peer, reset to false when an attempt to download more blocks from a peer does not result in any new blocks
- cumulativeDifficulty (S) is the cumulative difficulty
- lastBlockchainFeederHeight (N) is the height of the last blockchain of greatest cumulative difficulty obtained from a peer
- maxPrunableLifetime (N) is the maximum prunable lifetime (in seconds)
- time (N) is the current timestamp (in seconds since the genesis block)
- lastBlockchainFeeder (S) is the address or announced address of the peer providing the last blockchain of greatest cumulative difficulty
- blockchainState (S) Current state of this node's blockchain (UP_TO_DATE or DOWNLOADING)
Example:
http://localhost:9925/boom?requestType=getBlockchainStatus
{
"application":"BoomCore",
"version":"v1.0.0",
"time":155051641,
"lastBlock":"15968537823874442570",
"cumulativeDifficulty":"1078804541058944166",
"numberOfBlocks":4278,
"lastBlockchainFeeder":"47.99.241.81",
"lastBlockchainFeederHeight":4277,
"isScanning":false,
"requestProcessingTime":0
}
Get Constants
Get all defined constants.
Request:
requestType is getConstants
Response:
- maxBlockPayloadLength (N) is the maximum block payload length (in bytes)
- maxArbitraryMessageLength (N) is the maximum length (in bytes) of an arbitrary message
- maxPrunableMessageLength (N) is the maximum length (in bytes) of a prunable message
- maxTaggedDataDataLength (N) is the maximum length (in bytes) of tagged data
- maxPhasingDuration (N) is the maximum allowed phasing duration in block height
- epochBeginning (N) is the time in milliseconds when genesis block was created
- genesisAccountId (S) is the genesis account number
- genesisBlockId (S) is the genesis block ID
- transactionTypes (A) is an array of defined transaction types and subtypes (refer to the example below)
- transactionSubTypes (A) is an array of defined transaction subtypes and subtypes (refer to the example below)
- peerStates (A) is an array of defined peer states (refer to the example below)
- currencyTypes (A) is an array of defined currency types (refer to the example below)
- disabledAPIs (A) is an array of configured disabled apis (refer to the example below)
- apiTags (A) is an array of defined api tags (refer to the example below)
- disabledAPITags (A) is an array of configured disabled api tags (refer to the example below)
- votingModels (A) is an array of defined voting models (refer to the example below)
- holdingTypes (A) is an array of defined holding types (refer to the example below)
- minBalanceModels (A) is an array of defined minimum balance models (refer to the example below)
- shufflingStages (A) is an array of defined shuffling stages (refer to the example below)
- shufflingParticipantStates (A) is an array of defined shuffling participant states (refer to the example below)
- hashAlgorithms (A) is an array of defined hash algorithms (refer to the example below)
- mintingHashAlgorithms (A) is an array of defined minting hash algorithms (refer to the example below)
- phasingHashAlgorithms (A) is an array of defined phasing hash algorithms (refer to the example below)
- requestTypes (A) is an array of decined request types (refer to the example below)
Example:
http://localhost:9925/boom?requestType=getConstants
{
"genesisBlockId":"7650416439961744134",
"genesisAccountId":"0",
"maxBlockPayloadLength":179520,
"maxArbitraryMessageLength":1000,
"transactionTypes":[
{
"value":0,
"description":"Payment",
"subtypes":[
{
"value":0,
"description":"Ordinary payment"
}
]
},
{
"value":1,
"description":"Messaging",
"subtypes":[
{
"value":0,
"description":"Arbitrary message"
},
{
"value":1,
"description":"Alias assignment"
},
{
"value":6,
"description":"Alias sell"
},
{
"value":7,
"description":"Alias buy"
},
{
"value":5,
"description":"Account info"
}
]
},
{
"value":2,
"description":"Colored coins",
"subtypes":[
{
"value":0,
"description":"Asset issuance"
},
{
"value":1,
"description":"Asset transfer"
},
{
"value":2,
"description":"Ask order placement"
},
{
"value":3,
"description":"Bid order placement"
},
{
"value":4,
"description":"Ask order cancellation"
},
{
"value":5,
"description":"Bid order cancellation"
}
]
},
{
"value":3,
"description":"Digital goods",
"subtypes":[
{
"value":0,
"description":"Listing"
},
{
"value":1,
"description":"Delisting"
},
{
"value":2,
"description":"Price change"
},
{
"value":3,
"description":"Quantity change"
},
{
"value":4,
"description":"Purchase"
},
{
"value":5,
"description":"Delivery"
},
{
"value":6,
"description":"Feedback"
},
{
"value":7,
"description":"Refund"
}
]
},
{
"value":4,
"description":"Account Control",
"subtypes":[
{
"value":0,
"description":"Effective balance leasing"
}
]
}
],
"peerStates":[
{
"value":0,
"description":"Non-connected"
},
{
"value":1,
"description":"Connected"
},
{
"value":2,
"description":"Disconnected"
}
],
"requestTypes":{
},
"requestProcessingTime":0
}
Get State
Get the state of the server node and network.
Request:
requestType is getState includeCounts is true if the fields beginning with numberOf... are to be included (optional); password protected like the Debug Operations if true.
Response:
- numberOfPeers (N) is the number of known peers on the network
- numberOfGoods (N) is the number of DGS goods in the blockchain
- numberOfPolls (N) is the number of polls in the blockchain
- numberOfUnlockedAccounts (N) is the number of unlocked accounts on this node
- numberOfTransfers (N) is the number of AE transfers in the blockchain
- includeExpiredPrunable (B) is the value of the nxt.includeExpiredPrunable property
- numberOfOrders (N) is the number of AE orders in the blockchain
- numberOfTransactions (N) is the number of transactions in the blockchain
- maxMemory (N) is the maximum amount of memory the node may use (in Bytes)
- maxRollback (N) is the value of the nxt.maxRollback property
- numberOfOffers (N) is the number of buy currency offers in the blockchain
- isDownloading (B) is true if a download is in progress, false otherwise; true when a batch of more than 10 blocks at once has been downloaded from a peer, reset to false when an attempt to download more blocks from a peer does not result in any new blocks
- isScanning (B) is true if this node is scanning the blockchain, false otherwise
- cumulativeDifficulty (S) is the current cumulative forging difficulty
- numberOfCurrencies (N) is the number of currencies in the blockchain
- numberOfAssets (N) is the number of AE assets in the blockchain
- numberOfPrunableMessages (N) is the number of prunable messages in the blockchain
- freeMemory (N) is the amount of free memory on this node (in Bytes)
- peerPort (N) is the port used for connecting to peers
- numberOfVotes (N) is the number of votes in the blockchain
- availableProcessors (N) is the number of processors on this node
- numberOfTaggedData (N) is the number of tagged data in the blockchain
- numberOfActiveAccountLeases (N) is the number of active account leases in the blockchain
- numberOfAccountLeases (N) is the total number of account leases including scheduled leases (first scheduled lease only) in the blockchain
- numberOfAccounts (N) is the number of accounts in the blockchain
- numberOfDataTags (N) is the number of data tags in the blockchain
- needsAdminPassword (B) is true if the nxt.disableAdminPassword property is false
- currentMinRollbackHeight (N) is the current minimum rollback height
- numberOfBlocks (N) is the number of blocks (height + 1) in the blockchain
- isTestnet (B) is true if the node is connected to testnet, false otherwise
- numberOfCurrencyTransfers (N) is the number of currency transfers in the blockchain
- requestProcessingTime (N) is the API request processing time (in millisec)
- numberOfPhasedTransactions (N) is the number of phased transactions in the blockchain
- version (S) is the software version on this node
- numberOfBidOrders (N) is the number of AE bid orders in the blockchain
- lastBlock (S) is the last block address
- totalMemory (N) is the amount of memory this node is using (in Bytes)
- application (S) is the name of the software running on this node (typically BRS)
- numberOfAliases (N) is the number of aliases in the blockchain
- numberOfActivePeers (N) is the number of active peers on the network
- lastBlockchainFeederHeight (N) is the height of the last blockchain feeder
- maxPrunableLifetime (N) is the maximum prunable lifetime (in seconds)
- numberOfExchanges (N) is the number of currency exchanges in the blockchain
- numberOfTrades (N) is the number of AE trades in the blockchain
- numberOfPurchases (N) is the number of DGS purchases in the blockchain
- numberOfTags (N) is the number of DGS tags in the blockchain
- time (N) is the current node time (in seconds since the genesis block)
- numberOfAskOrders (N) is the number of AE ask orders in the blockchain
- lastBlockchainFeeder (S) is the announced name of the feeder of the last blockchain
- isOffline (B) is true if this node is connected to other peers, false otherwise
- Note: AE is Asset Exchange, DGS is Digital Goods Store
Example:
http://localhost:9925/boom?requestType=getState
{
"application":"BoomCore",
"version":"v1.0.0",
"time":155051871,
"lastBlock":"414008766606015525",
"cumulativeDifficulty":"1079507241971465225",
"totalEffectiveBalanceNXT":17498942,
"numberOfBlocks":4280,
"numberOfTransactions":5964,
"numberOfAccounts":1827,
"numberOfAssets":0,
"numberOfOrders":0,
"numberOfAskOrders":0,
"numberOfBidOrders":0,
"numberOfTrades":0,
"numberOfTransfers":0,
"numberOfAliases":0,
"numberOfPeers":71,
"numberOfUnlockedAccounts":0,
"lastBlockchainFeeder":"113.79.14.44",
"lastBlockchainFeederHeight":4279,
"isScanning":false,
"availableProcessors":4,
"maxMemory":2053111808,
"totalMemory":2053111808,
"freeMemory":94565544,
"requestProcessingTime":428
}
Get Time
Get the current time.
Request:
requestType is getTime Response:
time (N) is the current time (in seconds since the genesis block). requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getTime
{
"time":155051965,
"requestProcessingTime":0
}
Transaction Operations
Broadcast Transaction
Broadcast a transaction to the network. POST only.
Request:
requestType is broadcastTransaction
transactionBytes is the bytecode of a signed transaction (optional)
transactionJSON is the transaction object (optional if transactionBytes provided)
prunableAttachmentJSON is the attachment object embedded in transactionJSON containing a prunable message (required if transactionJSON not provided because transactionBytes never includes prunable data) Response:
requestProcessingTime (N) is the API request processing time (in millisec)
fullHash (S) is the full hash of the signed transaction
transaction (S) is the transaction ID
Example:
http://localhost:9925/boom?requestType=broadcastTransaction&transactionBytes=00109cce3f071800a61325eec9e83d7cac55544b8eca8ea8034559bafb5834b8a5d3b6d4efb85f12ae2527ec7e55f1eb00e1f5050000000018370b00000000000000000000000000000000000000000000000000000000000000000000000000bed76407665ef3dbe24c78041a497e9e603076b8adf90353effe5218c83f69078adaec89a2f2e1ffb7bc835b1c21cf8300185cd4f3d7df52be156e61069d569d0000000006ac0700769afc7e6215e488
{
"requestProcessingTime": 4,
"fullHash": "d663f7fe8bf215906b29838ade5d860b2229188acea7827a737d823253b488db",
"transaction": "10382471199064548310"
}
Calculate Full Hash
Calculate the full hash of a transaction.
Request:
- requestType is calculateFullHash
- unsignedTransactionJSON is the unsigned transaction JSON object (optional)
- unsignedTransactionBytes are the unsigned bytes of a transaction (optional if unsignedTransactionJSON is provided)
- signatureHash is a SHA-256 hash of the transaction signature
Response:
- requestProcessingTime (N) is the API request processing time (in millisec)
- fullHash (S) is the full hash of the signed transaction
Example:
http://localhost:9925/boom?requestType=calculateFullHash&unsignedTransactionBytes=01104ec93f071800a61325eec9e83d7cac55544b8eca8ea8034559bafb5834b8a5d3b6d4efb85f12b31119f931eaa6d4000000000000000018370b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000003ac07005ac8e8794cc6d21001210000805468697320697320612073656e644d65737361676520415049206578616d706c65&signatureHash=0f37d045bc7d4f2bd85cb565a5c4e575464ac387b986f80fb8c31635cf03923e
{
"requestProcessingTime": 0,
"fullHash": "a8035211b0fb38415509ca451feee44787598462e7bc608affb8e7b2a1f81d05"
}
Get Transaction
Get a transaction object given a transaction ID.
Request:
- requestType is getTransaction
- transaction is the transaction ID (optional)
- fullHash is the full hash of the transaction (optional if transaction ID is provided)
- includePhasingResult is true to retrieve execution status of each phased transaction (optional)
- requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)
- requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)
Response:
- sender (S) is the account ID of the sender
- senderRS (S) is the Reed-Solomon address of the sender
- feeNQT (S) is the fee (in NQT) of the transaction
- amountNQT (S) is the amount (in NQT) of the transaction
- transactionIndex (N) is a zero-based index giving the order of the transaction in its block
- timestamp (N) is the time (in seconds since the genesis block) of the transaction
- referencedTransactionFullHash (S) is the full hash of a transaction referenced by this one, omitted if no previous transaction is referenced
- confirmations (N) is the number of transaction confirmations
- subtype (N) is the transaction subtype (refer to Get Constants for a current list of subtypes)
- block (S) is the ID of the block containing the transaction
- blockTimestamp (N) is the timestamp (in seconds since the genesis block) of the block
- height (N) is the height of the block in the blockchain
- senderPublicKey (S) is the public key of the sending account for the transaction
- type (N) is the transaction type (refer to Get Constants for a current list of types)
- deadline (N) is the deadline (in minutes) for the transaction to be confirmed
- signature (S) is the digital signature of the transaction
- recipient (S) is the account number of the recipient, if applicable
- recipientRS (S) is the Reed-Solomon address of the recipient, if applicable
- fullHash (S) is the full hash of the signed transaction
- signatureHash (S) is a SHA-256 hash of the transaction signature
- approved (B) is a boolean indicating if the transaction is approved (only included when includePhasingResult is true and the transaction is phased)
- result (S) is a string containing the result of the transaction (only included when includePhasingResult is true and the transaction is phased)
- executionHeight (N) is the height the transaction was executed (only included when includePhasingResult is true and the transaction is phased)
- transaction (S) is the transaction ID
- version (N) is the transaction version number
- phased (B) is true if the transaction is phased, false otherwise
- ecBlockId (N) is the economic clustering block ID
- ecBlockHeight (N) is the economic clustering block height
- attachment (O) is an object containing any additional data needed for the transaction, if applicable
- lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)
- requestProcessingTime (N) is the API request processing time (in millisec)
- Note: The block, blockTimestamp and confirmations fields are omitted for unconfirmed transactions. Double-spending transactions are not retrieved.
Example:
http://localhost:9925/boom?requestType=getAccountBlocks&account=3410107253310062948
{
"type":0,
"subtype":0,
"timestamp":155050599,
"deadline":1440,
"senderPublicKey":"40252f0b04b8fd9c6d84281d08aa09c493ab49e3e3da04a54f59e930ee905e4d",
"recipient":"18389690343189347663",
"recipientRS":"BOOM-QZCH-XWTM-C2K5-HFCFY",
"amountNQT":"1140000000",
"feeNQT":"735000",
"signature":"cfa0f238a394fbdfc9757920bc8115e23c4c7be43d118fa5fe4bf46270ab7d03db5d8fd53f060944fc497bb8a31f1f4a3fcefda86b060b55248e843052b9b2f1",
"signatureHash":"cd6ae697f446db8b928ea1993e7669682e3ce1165f8409564640c969136e8d34",
"fullHash":"ec43848b51233c526de7d00116add7d77e2b95ac551b98de973946478c2a85cc",
"transaction":"5925650042852754412",
"sender":"16675163526847713699",
"senderRS":"BOOM-XNF5-W5YN-KBVP-GNJUG",
"height":4279,
"version":1,
"ecBlockId":"12928651312605717474",
"ecBlockHeight":4266,
"block":"414008766606015525",
"confirmations":2,
"blockTimestamp":155051751,
"requestProcessingTime":4
}
Get Transaction Bytes
Get the bytecode of a transaction.
Request:
- requestType is getTransactionBytes
- transaction is a transaction ID
- requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)
- requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)
Response:
- confirmations (N) is the number of transaction confirmations
- transactionBytes (S) are the bytes contained in the transaction
- unsignedTransactionBytes (S) are the unsigned bytes contained in the transaction
- prunableAttachmentJSON (O) is the prunable attachment JSON object, if applicable, because transactionBytes never includes prunable data
- lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)
- requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=getTransactionBytes&transaction=5925650042852754412
{
"confirmations":22,
"transactionBytes":"001067e23d09a00540252f0b04b8fd9c6d84281d08aa09c493ab49e3e3da04a54f59e930ee905e4d4f7d3b33ef4d35ff0005f3430000000018370b00000000000000000000000000000000000000000000000000000000000000000000000000cfa0f238a394fbdfc9757920bc8115e23c4c7be43d118fa5fe4bf46270ab7d03db5d8fd53f060944fc497bb8a31f1f4a3fcefda86b060b55248e843052b9b2f100000000aa100000e263c0b0decb6bb3",
"unsignedTransactionBytes":"001067e23d09a00540252f0b04b8fd9c6d84281d08aa09c493ab49e3e3da04a54f59e930ee905e4d4f7d3b33ef4d35ff0005f3430000000018370b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa100000e263c0b0decb6bb3",
"requestProcessingTime":59
}
Parse Transaction
Get a transaction object given a (signed or unsigned) transaction bytecode, or re-parse a transaction object. Verify the signature.
Request:
- requestType is parseTransaction
- transactionBytes is the signed or unsigned bytecode of the transaction (optional)
- transactionJSON is the transaction object (optional if transactionBytes is included)
- requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)
- requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)
Response:
- verify (B) is true if the signature is verified, false otherwise
Example:
http://localhost:9925/boom?requestType=parseTransaction&transactionBytes=01104ec93f071800a61325eec9e83d7cac55544b8eca8ea8034559bafb5834b8a5d3b6d4efb85f12b31119f931eaa6d4000000000000000018370b00000000000000000000000000000000000000000000000000000000000000000000000000dc2503584a48e30ac62d62848f58461e0e9ff55070008743c24f380c24a9ef05525c70b5d40962566f3f4de2018277ba7956eb09d0aec84219784de7f3b76f6a0100000003ac07005ac8e8794cc6d21001210000805468697320697320612073656e644d65737361676520415049206578616d706c65
{
"type":1,
"subtype":0,
"timestamp":121620814,
"deadline":24,
"senderPublicKey":"a61325eec9e83d7cac55544b8eca8ea8034559bafb5834b8a5d3b6d4efb85f12",
"recipient":"15323192282528158131",
"recipientRS":"BOOM-L6FM-89WK-VK8P-FCRBB",
"amountNQT":"0",
"feeNQT":"735000",
"signature":"dc2503584a48e30ac62d62848f58461e0e9ff55070008743c24f380c24a9ef05525c70b5d40962566f3f4de2018277ba7956eb09d0aec84219784de7f3b76f6a",
"signatureHash":"2bcbafeab7a0bae40337fe34adea84110b1f770a33841c95f3fe9e19dde41bae",
"fullHash":"0f37d045bc7d4f2bd85cb565a5c4e575464ac387b986f80fb8c31635cf03923e",
"transaction":"3120851314369640207",
"attachment":{
"version.Message":1,
"message":"This is a sendMessage API example",
"messageIsText":true
},
"sender":"16922903237994405232",
"senderRS":"BOOM-FRDJ-UPLH-MY9A-GUKQP",
"height":2147483647,
"version":1,
"ecBlockId":"1212249281481197658",
"ecBlockHeight":502787,
"verify":false,
"requestProcessingTime":24
}
Sign Transaction
Calculates the full hash, signature hash, and transaction ID of an unsigned transaction.
Request:
- requestType is signTransaction
- unsignedTransactionJSON is the transactionJSON field of the transaction, without a signature subfield
- unsignedTransactionBytes is the unsignedTransactionBytes field of the transaction (optional, if unsignedTransactionJSON provided)
- prunableAttachmentJSON is a prunable attachment JSON object, if applicable, because unsignedTransactionBytes never includes prunable data (optional if the transaction has already been broadcast and the prunable message can still be retrieved from the database)
- secretPhrase is the secret passphrase of the signing account
- validate is false to skip validation of the transaction bytes being signed (useful on nodes where the full blockchain is not downloaded)
- requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)
- requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)
Response:
- signatureHash (S) is a SHA-256 hash of the transaction signature, used in escrow transactions
- verify (B) is true the signature is verified, false if not
- transactionJSON (O) is the signed transaction JSON object
- transactionBytes (S) are the signed transaction bytes
- fullHash (S) is the full hash of the signed transaction
- prunableAttachmentJSON (O) is the prunable attachment JSON object, if applicable, because transactionBytes never includes prunable data
- transaction (S) is the transaction ID, derived from the fullHash
- lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)
- requestProcessingTime (N) is the API request processing time (in millisec)
Example:
http://localhost:9925/boom?requestType=signTransaction&unsignedTransactionBytes=01104ec93f071800a61325eec9e83d7cac55544b8eca8ea8034559bafb5834b8a5d3b6d4efb85f12b31119f931eaa6d4000000000000000018370b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000003ac07005ac8e8794cc6d21001210000805468697320697320612073656e644d65737361676520415049206578616d706c65&secretPhrase=IWontTellYou
{
"signatureHash": "2bcbafeab7a0bae40337fe34adea84110b1f770a33841c95f3fe9e19dde41bae",
"verify": true,
"requestProcessingTime": 2,
"transactionBytes": "01104ec93f071800a61325eec9e83d7cac55544b8eca8ea8034559bafb5834b8a5d3b6d4efb85f12b31119f931eaa6d4000000000000000018370b*",
"fullHash": "0f37d045bc7d4f2bd85cb565a5c4e575464ac387b986f80fb8c31635cf03923e",
"transaction": "3120851314369640207"
}
Utilities
Long Convert
Converts an ID to the signed long integer representation used internally.
Request:
requestType is longConvert
id is a numerical ID, in decimal form but equivalent to an 8-byte unsigned integer as produced by SHA-256 hashing Response:
stringId (S) is the numerical ID
longId (S) is the signed long integer (8-bytes) representation of the ID used internally, returned as a string
requestProcessingTime (N) is the API request processing time (in millisec)
Note: Java does not support unsigned integers, so any unsigned ID (such as a block ID) visible in the BRS client is represented internally as a signed integer.
Example:
http://localhost:9925/boom?requestType=longConvert&id=3410107253310062948
{
"stringId":"3410107253310062948",
"longId":"3410107253310062948",
"requestProcessingTime":36
}
RS Convert
Get both the Reed-Solomon account address and the account number given an account ID.
Request:
- requestType is rsConvert
- account is an account ID (either RS address or number)
Response:
- accountRS (S) is the Reed-Solomon address of the account
- requestProcessingTime (N) is the API request processing time (in millisec)
- account (S) is the account number
Example:
http://localhost:9925/boom?requestType=rsConvert&account=6404204414174949879
{
"account":"6404204414174949879",
"accountRS":"BOOM-7WHR-ZHDY-7MK4-7F4SK",
"requestProcessingTime":0
}
Mining
Get Mining Info
Request:
Response:
Example:
http://localhost:9925/boom?requestType=getMiningInfo
{
"height":"4307",
"generationSignature":"1ad4e488795a5061505e24607adab80d515f1767bc5638b08df2f25b5fb95b5d",
"baseTarget":"64913",
"requestProcessingTime":1
}
Get Accounts With Reward Recipient
Request:
Response:
Example:
http://localhost:9925/boom?requestType=getAccountsWithRewardRecipient&account=6857767962801888750
{
"accounts":[
"9297884082301286895",
"9404224565397919547",
"9587477109685238229",
"8479269590685499326",
"6857767962801888750"
],
"requestProcessingTime":125
}
Get Reward Recipient
Request:
Response:
Example:
http://localhost:9925/boom?requestType=getRewardRecipient&account=6404204414174949879
{
"rewardRecipient":"6857767962801888750",
"requestProcessingTime":4
}