Skip to main content

Blockservice Events

Blockservice currently supports publish / subscribe using websockets notifications. This allows users to wait for events instead of polling for them.

Connect to websocket server

Below is a illustration of the JS code:

const { io } = require("socket.io-client");
const socket = io("ws://server");
socket.on("connect", () => {
socket.emit('join', "all-state-changes-one");
socket.emit('join', "all-state-changes-by-transaction");
socket.emit('join', "new-contracts");
});

Events

new-block

No subscription required. Triggered when a new block is generated.

Message

{
"message": {
"hash": "449c7d87b4b3771fd5fef9d558928f14e65f0fe5cc2c16b8a9c56c6382790fac",
"number": 66895,
"previous": "aa89502542295d88e6b031a09df41ccd0a6bafe864b015af83d7cb7f8587a4cc",
"subblocks": [{
"input_hash": "9c8dbb83537460c0a39c17503d76752228e4de512f2d21119bf033d34c6dfca6",
"merkle_leaves": ["25b4264ab433ed1b074230da1539192c895a22ff8c3042b942b5edc61eedca22"],
"signatures": [{
"signature": "11f17e25c472b0d138ec5b1dd0c76399c3d170f2c4ab72d0cbbe0af057a5f7364beea6ac760e78984ed05d003af8aef8b271324540ce12ccc697b21a9bfb6c05",
"signer": "ee2e928015fd8433c8c6da7234504968a1bde751b0784c3efbe4bc42628d5e9b"
}],
"subblock": 0,
"transactions": [{
"hash": "74e84e4d19c885ad85b7f951a3fa3f53d8b307489d4a00a462ce852f63fadad9",
"result": "None",
"stamps_used": 19,
"state": [{
"key": "currency.balances:b17eabddbd474bdaebfca71f654ab7dc1195510062e3cdbbdc442a028b050e41",
"value": {
"__fixed__": "6.0769230769230818"
}
}, {
"key": "currency.balances:2341d744f11658d7f1ca1c514a1b76ff07898435c46402b1e4f8b00d4a13f5f9",
"value": {
"__fixed__": "3.01538460846156221"
}
}],
"status": 0,
"transaction": {
"metadata": {
"signature": "89d90c6bee3226ea04754e9a630bcc4e8bd6bcec032b125e54e3c33a78025c448f40cc94358cc112475d64b53c6b987f33cd1fa7f2299ac6a755d2f15fe0ba01",
"timestamp": 1653486525
},
"payload": {
"contract": "currency",
"function": "transfer",
"kwargs": {
"amount": {
"__fixed__": "1.0"
},
"to": "2341d744f11658d7f1ca1c514a1b76ff07898435c46402b1e4f8b00d4a13f5f9"
},
"nonce": 28,
"processor": "89f67bb871351a1629d66676e4bd92bbacb23bd0649b890542ef98f1b664a497",
"sender": "b17eabddbd474bdaebfca71f654ab7dc1195510062e3cdbbdc442a028b050e41",
"stamps_supplied": 26
}
}
}]
}]
}
}

new-state-changes-one

Triggered when state changed. Returns a changed state in a transaction.

Create subscription

Emits an join event to the socket server with arguments all-state-changes-one

example socket.emit('join', "all-state-changes-one");

Message

{
"room": "all-state-changes-one",
"message": {
"contractName": "currency",
"variableName": "balances",
"key": "9185ce2f9b0b68621b79a82e029aafa36e127f355fdece0691e07dcc3fb1fbcb",
"keys": ["9185ce2f9b0b68621b79a82e029aafa36e127f355fdece0691e07dcc3fb1fbcb"],
"rootKey": "9185ce2f9b0b68621b79a82e029aafa36e127f355fdece0691e07dcc3fb1fbcb",
"value": {
"__fixed__": "1.5384615384615439"
},
"state_changes_obj": {
"currency": {
"balances": {
"9185ce2f9b0b68621b79a82e029aafa36e127f355fdece0691e07dcc3fb1fbcb": {
"__fixed__": "1.5384615384615439"
}
}
}
},
"contractCalled": "currency",
"kwargs": {
"amount": {
"__fixed__": "1.0"
},
"to": "9185ce2f9b0b68621b79a82e029aafa36e127f355fdece0691e07dcc3fb1fbcb"
}
}
}

new-state-changes-by-transaction

Triggered when state changed. Returns all the changed state in a transaction.

Create subscription

Emits an join event to the socket server with arguments all-state-changes-by-transaction

example socket.emit('join', "all-state-changes-by-transaction");

Message

{
"room": "all-state-changes-by-transaction",
"message": {
"tx_uid": "000000066895.00000.00000",
"txInfo": {
"hash": "74e84e4d19c885ad85b7f951a3fa3f53d8b307489d4a00a462ce852f63fadad9",
"result": "None",
"stamps_used": 19,
"state": [{
"key": "currency.balances:b17eabddbd474bdaebfca71f654ab7dc1195510062e3cdbbdc442a028b050e41",
"value": {
"__fixed__": "6.0769230769230818"
}
}, {
"key": "currency.balances:2341d744f11658d7f1ca1c514a1b76ff07898435c46402b1e4f8b00d4a13f5f9",
"value": {
"__fixed__": "3.01538460846156221"
}
}],
"status": 0,
"transaction": {
"metadata": {
"signature": "89d90c6bee3226ea04754e9a630bcc4e8bd6bcec032b125e54e3c33a78025c448f40cc94358cc112475d64b53c6b987f33cd1fa7f2299ac6a755d2f15fe0ba01",
"timestamp": 1653486525
},
"payload": {
"contract": "currency",
"function": "transfer",
"kwargs": {
"amount": {
"__fixed__": "1.0"
},
"to": "2341d744f11658d7f1ca1c514a1b76ff07898435c46402b1e4f8b00d4a13f5f9"
},
"nonce": 28,
"processor": "89f67bb871351a1629d66676e4bd92bbacb23bd0649b890542ef98f1b664a497",
"sender": "b17eabddbd474bdaebfca71f654ab7dc1195510062e3cdbbdc442a028b050e41",
"stamps_supplied": 26
}
}
},
"blockNum": 66895,
"timestamp": 1653486525000,
"sender": "b17eabddbd474bdaebfca71f654ab7dc1195510062e3cdbbdc442a028b050e41",
"contractCalled": "currency",
"kwargs": {
"amount": {
"__fixed__": "1.0"
},
"to": "2341d744f11658d7f1ca1c514a1b76ff07898435c46402b1e4f8b00d4a13f5f9"
},
"state_changes_obj": "{\\"
currency\\ ":{\\"
balances\\ ":{\\"
b17eabddbd474bdaebfca71f654ab7dc1195510062e3cdbbdc442a028b050e41\\ ":{\\"
__fixed__\\ ":\\"
6.0769230769230818\\ "},\\"
2341 d744f11658d7f1ca1c514a1b76ff07898435c46402b1e4f8b00d4a13f5f9\\ ":{\\"
__fixed__\\ ":\\"
3.01538460846156221\\ "}}}}",
"affectedContractsList": ["currency"],
"affectedVariablesList": ["currency.balances"],
"affectedRootKeysList": ["currency.balances:b17eabddbd474bdaebfca71f654ab7dc1195510062e3cdbbdc442a028b050e41", "currency.balances:2341d744f11658d7f1ca1c514a1b76ff07898435c46402b1e4f8b00d4a13f5f9"]
}
}

new_contract

Triggered when get a new contract.

Create subscription

Emits an join event to the socket server with arguments new-contracts

example socket.emit('join', "new-contracts");

Message

{
"room": "new-contracts",
"message": {
"contractName": "con_new11111111111_contract",
"lst001": false
}
}