Integrating with the I/O Digital Blockchain

Use the I/O Digital Blockchain?

The I/O Digital Blockchain can store data up to 2 mb per block, attach a file (any kind of file, string, hash) to an alias (DIONS name), transfer that alias to another user and facilitate a secure messaging system.

Please be sure to read our full whitepaper explaining all the details and possibilities.
This new whitepaper explains all DIONS (live) features with diagrams supporting the features.

Booklet: here
PDF: here

API technical documentation (version 1.5) – April 15th 2018

To access the I/O Coin Blockchain you need to download the latest files from Github and synchronize the full Blockchain. Blockchain files for faster sync are provided in Github. To use the available features you should have some IOC in your wallet to pay for the services.
The IOC you pay for the data services will be redistributed to the active stakers in the network.

If you need assistance or want to share your ideas, thoughts and solutions, please connect to our Telegram Developer Channel

 

Get Info

iocoind getinfo

Prints various information about the node and the network.

Example

getinfo
{
    "version" : "v5.0.0.0-g6b2edb9",
    "protocolversion" : 60021,
    "walletversion" : 60000,
    "balance" : 0.51830000,
    ...
}

Get Help

iocoind help

Lists all available public RPC commands.

Example

help
[
    "addmultisigaddress",
    "addredeemscript",
    "addresstodion",
    "alias",
    ...
]

Get Block Count

iocoind getblockcount

Get the current, latest synced, block.

Example

getblockcount
1741667

RSA Keys

iocoind myrsakeys

Get a list of available wallet addresses and aliasses attached to it.

Example

myrsakeys
[
    {
        "address" : "iVEcVcbaNGf755dYPsR1eKnAzZhdcmbepK",
        "alias" : "NONE"
    },
    {
        "address" : "ipFAdkYm9JD3UsoFCfUnCqHvKdGkDkDHsr",
        "alias" : "dennuz666"
    },
    ...

Check Wallet

iocoind checkwallet

Get the ‘health status’ of the wallet. If you are missing coins or a RPC gone wrong you can check the status here.

Example

checkwallet
{
    "mismatched spent coins" : 2,
    "amount in question" : 0.49830000
}

Repair Wallet

iocoind repairwallet

If wallet check fails (gives an error status) you can try repair the wallet with this RPC.

Example

repairwallet
{
    "mismatched spent coins" : 2,
    "amount affected by repair" : 0.49830000
}

Alias Registration

iocoind alias "alias"

Registers a new encrypted alias and returns the transaction id. The alias remains valid at the time of writing for 210000 blocks from any given update. Data fees
are currently 0.01 IOC minimum plus 0.01 IOC for every 1Kb.

Parameters
Required parameters
alias string

Example

alias "my alias"
[
    "aa5d7b8d74d9e69ef4d029dd12fe635bed91f388e3c026d10b8fc1715f925108"
]

Alias decryption

iocoind decryptAlias "alias" "associated_address"

Decrypt an alias with associated key address. You can get the associated address by using the statusList RPC. Data fees for decypting an alias are currently 0.01 IOC.

Parameters
Required parameters
alias string
associated_address string

Example

decryptAlias "myaliastodecrypt" ipmPfW87XWUGEGufivjfHxd1VWed35hfCG
7c63ebf7ed21a8583819b2f581f72d2bd7949f3d379537193d37d7013478a142

Upload Data

iocoind updateEncrypt "alias" "file_path"

The updateEncypt command associates data with the given (encrytped) alias. The data is extracted, compressed and encrypted on the blockchain using AES 256 encryption. You can check the encrypted status (boolean) of an alias in the wallet or use the ‘statusList’ command in the daemon. Data fees are currently 0.02 IOC.

Parameters
Required parameters
alias string
file_path stringLocal device path to the file.

Example

updateEncrypt myalias C:\Users\username\Desktop\test.txt
fade2f2c3bb2e2d0877266bd119e89fff73f841a96dff4c405cc7fbc25f477d6

Download Data

iocoind downloadDecrypt "alias" "file_path"

Downloading data is possible in two ways. You can download data by alias, just like you uploaded it. After an alias is expired (see ‘Alias Registration’ for more info about expiration) you can then download data with the private key from the expired alias with the ‘downloadDecryptEPID’ command. You can get the address of an alias by using the statusList RPC.

Parameters
Required parameters
alias string
file_path stringLocal device storage path to save the file.

Example

downloadDecrypt myalias C:\Users\username\Desktop\test.txt
    true

downloadDecryptEPID

iocoind downloadDecryptEPID "address" "file_path"
Parameters
Required parameters
address string
file_path stringLocal device storage path to save the file.

Example

downloadDecryptEPID ib388VZfBNnbrJv86PVXeeUwAF8BZdKKGs C:\Users\username\Desktop\test.txt
true

Transfer alias

iocoind transferAlias "alias" "target"

Transfer a given alias to the target address or alias. Data fees are currently 0.01 IOC.

Parameters
Required parameters
alias string
target stringTarget alias or address.

Examples

transferAlias myaliastodecrypt ikQHhA73EnmBsoV7ZBxrZYzPK5WtAM9UXR
transferAlias myaliastotransfer targetalias

Transfer Encrypted Alias

iocoind transferEncryptedAlias "alias to transfer" "alias address to transfer" "target wallet address"

Transfer an encrypted alias over a channel. You can get the alias address by using the statuslist command. Data fees are currently 0.02 IOC.

Parameters
Required parameters
alias string
address stringThe address of the alias.
address stringTarget wallet address.

Example

transferEncryptedAlias myalias iWTgoUFgAyBCbAfbLB9qXQBn1RsHhHrWir ikQHhA73EnmBsoV7ZBxrZYzPK5WtAM9UXR
    fade2f2c3bb2e2d0877266bd119e89fff73f841a96dff4c405cc7fbc25f477d6

Send Public Key

iocoind sendPublicKey "address" "address"

To send or receive an alias users would have to send an invite From Public alias (A) to Public alias (B) as in an rsa key exchange. This would initiate an encrypted tunnel, giving the ability to transfer aliases, but also initiate messaging between users.

Parameters
Required parameters
address stringThe address of the local alias.
address stringThe address of the target alias.

Example

sendPublicKey ipFAdkYm9JD3UsoFCfUnCqHvKdGkDkDHsr ifURRvG6asxQJauo9G8gGEfqnbYKzq3UYK
[
    "253fce5a099fe97322fcb39d6f5028a509d76405fea6852ac2d37cd5926ebc9f",<
    "IH4+eeUgKHqElWBfk9OH5rEwHA2T8a+iuPqmDgKmmGgBO4QmEHXwBf7Rub4bATf1yXjX31rbQXe2dm2A47oDKB8="
]

Status List

iocoind statusList ["alias"]

List all I/O Coin addresses that have RSA key pairs associated with them. You can check the status of an alias with this command by adding the optional alias parameter. The wallet needs to be unlocked.

Parameters
Optional parameters
alias stringoptional paramter only for unencrypted aliasses.

Example

statusList myalias
]{
    "alias" : "myalias",
    "encrypted" : "true",
    "address" : "iWmHymK9bDSQeAJmoFzafwiMRPbjyfHDfC",
    "nHeigt" : 1733471,
    "expires_in" : 209729,
    "xtuVector" : "transform"
}]

Send Message

iocoind sendMessage "from address" "message" "to address"

Send an encrypted message over an established channel. Read Send Public Key for setting up an established channel.

Parameters
Required parameters
from address stringThe address of the local alias.
message stringThe message to send.
to address stringThe address of the target alias.

Example

sendMessage ipFAdkYm9JD3UsoFCfUnCqHvKdGkDkDHsr "Test" ifURRvG6asxQJauo9G8gGEfqnbYKzq3UYK
    fade2f2c3bb2e2d0877266bd119e89fff73f841a96dff4c405cc7fbc25f477d6
}]

Received Messages

iocoind decryptedMessageList

List the received encrypted messages. Encrypted messages are locally decrypted for viewing in plain text. Needs an unlocked wallet.

Example

decryptedMessageList
[{
    "sender" : "ipFAdkYm9JD3UsoFCfUnCqHvKdGkDkDHsr",
    "recipient" : "ifURRvG6asxQJauo9G8gGEfqnbYKzq3UYK",
    "encrypted_message" : "Klt7ch/FyubdWlGG6Jj1Xg==",
    "time" : "2018-04-12 05:20:48 UTC",
    "plain_text" : "Test",
    "iv128Base64" : "vlYaWjucdK3aOtZGjZsK2g==",
    "signature" : "H0ZJ43IefH6LeKzrLMiBMrfdQvnXSC013czsbAWF3NrbJIwVNL4+qdBLf5KCGVPBIVcjjqlVsNSFfipy0jD85+0="
}]

Known projects

Any project can start developing and using the IOC Blockchain for their project. The below projects are in development by external teams.
Want your project listed? Contact us.