description |
---|
ICONex Connect is a simple protocol for supporting 3rd party applications who want send transactions, ICX or IRC tokens via ICONex wallet.
- Get address of ICON wallet which managed by ICONex.
- Request send transaction.
- Request send ICX or IRC Token.
- Request
Key | Type | Description |
---|---|---|
data | String | Base64 encoded string of JSON Object |
caller | String | Custom URL Scheme |
var action = [String: Any]()
action["id"] = 1234
action["method"] = "bind"
guard let data = try? JSONSerialization.data(withJSONObject: action, options: []) else { return }
let encoded = data.base64EncodedString()
let items = [URLQueryItem(name: "data", value: encoded), URLQueryItem(name: "caller", value: "my-app-scheme://")]
var component = URLComponents(string: "iconex://")!
component.queryItems = items
UIApplication.shared.open(component.url!, options: [:], completionHandler: nil)
-
Response
my-app-scheme://?data=Base64EncodedString
// Request
{
"id": $INT1,
"method": "$STRING1"
"params": {
"$KEY1": "$VALUE1",
"$KEY2": "$VALUE2",
...
}
}
// Response
{
"id": $INT1,
"code": $INT2, // if code == 1 success, else fail
"result": "$VALUE1"
}
Key | Type | Description | Required |
---|---|---|---|
id | INT | Request Identifier | Required |
method | String | Method for current request | Required |
params | T_DATA_TYPE | Parameters for current request | Optional |
Method | Description | Required Parameters |
---|---|---|
bind | Request wallet address | - |
sign | Request sign for transaction | version, from, value, stepLimit, timestamp, dataType(optional), data(optional) |
sendICX | Request send ICX | from, to, value |
sendToken | Request send IRC token | from, to, value, contractAddress |
- Return selected wallet's address.
Parameters
NULL
Returns
Selected wallet's address.
Example
//Request
{
"id": 1234,
"method" : bind
}
// Response - success
{
"id": 1234,
"code": 1,
"result": "hx1234..."
}
//Response - fail
{
"id": 1234,
"code": -1000,
"result": "Operation canceled by user."
}
- Returns the signature of the transaction hash.
Parameters
Key | Type | Description | Required |
---|---|---|---|
version | T_INT | Protocol version ("0x3" for v3) | Required |
from | T_ADDR_EOA | EOA address that created transaction | Required |
to | T_ADDR_EOA | EOA address to receive coins, or SCORE address to execute the transaction. | Required |
value | T_INT | Amount of ICX coins in to transfer. When omitted, assumes 0. (1 icx = 1 * 10^18 loop) | Required |
stepLimit | T_INT | Maximum Step allowance that can be used by the transaction. | Required |
timestamp | T_INT | Transaction creation time. timestamp is in microsecond. | Required |
nid | T_INT | Network ID ("0x1" for Mainnet, "0x2" for Testnet, etc) | Required |
nonce | T_INT | An arbitrary number used to prevent transaction hash collision. | Required |
dataType | T_DATA_TYPE | Type of data (call, deploy or message) | Optional |
data | T_DICT or String | The content of data varies depending on the dataType. | Optional |
Returns
Signature of transaction hash.
Example
// Request
{
"id": 1234,
"method": "sign",
"params": {
"version": "0x3",
"from": "hxbe258ceb872e08851f1f59694dac2558708ece11",
"to": "hx5bfdb090f43a808005ffc27c25b213145e80b7cd",
"value": "0xde0b6b3a7640000",
"stepLimit": "0x12345",
"timestamp": "0x563a6cf330136",
"nid": "0x2",
"nonce": "0x1"
}
}
// Response - success
{
"id": 1234,
"code": 1,
"result": "SIGNED_VALUE"
}
// Response - fail
{
"id": 1234,
"code": -1000,
"result": "Operation canceled by user."
}
- Send ICX via ICONex and returns transaction hash.
Parameters
Key | Type | Description | Required |
---|---|---|---|
from | T_ADDR_EOA | EOA address that will send ICX coins. | Required |
to | T_ADDR_EOA | EOA address to receive coins. | Required |
value | T_INT | Amount of ICX coins in to transfer | Required |
dataType | T_DATA_TYPE | Type of data (call, deploy or message) | Optional |
data | T_DICT or String | the content of data varies depending on the dataType. | Optional |
Returns
Transaction hash
Example
// Request
{
"id": 1234,
"method": "sendICX",
"params": {
"to": "hxab2d8215eab14bc6bdd8bfb2c8151257032ecd8b",
"from": "hxbe258ceb872e08851f1f59694dac2558708ece11",
"value": "0x1"
}
}
// Response - success
{
"id": 1234,
"code": 1,
"result": "0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"
}
// Response - fail
{
"id": 1234,
"code": -1000,
"result": "Opertaion canceled by user."
}
- Send IRC token via ICONex and returns transaction hash.
Parameters
Key | Type | Description | Required |
---|---|---|---|
from | T_ADDR_EOA | EOA address that will send IRC token. | Required |
to | T_ADDR_EOA | EOA address to receive tokens. | Required |
value | T_INT | Amount of IRC token | Required |
contractAddress | T_ADDR_EOA | SCORE contract address | Required |
Returns
Transaction hash
Example
// Request
{
"id": 1234,
"method": "sendToken",
"params": {
"from": "hxbe258ceb872e08851f1f59694dac2558708ece11",
"to": "hxab2d8215eab14bc6bdd8bfb2c8151257032ecd8b",
"value": "0x1",
"contractAddress": "cxb0776ee37f5b45bfaea8cff1d8232fbb6122ec32"
}
}
// Response - success
{
"id": 1234,
"code": 1,
"result": "0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"
}
// Response - fail
{
"id": 1234,
"code": -1000,
"result": "Opertaion canceld by user"
}
Code | Message | Description |
---|---|---|
-1000 | Operation canceld by user. | User cancel |
-1001 | Parse error (Invalid JSON type) | Data is not a JSON type |
-1002 | Invalid request. | JSON must contains required parameters. |
-1003 | Invalid method | Invalid method |
-1004 | Not found caller. | Could not found caller in request. |
-2001 | ICONex has no ICX wallet. | ICONex has no ICX wallet for support. |
-2002 | Not found parameter. ('$key') | $key is not found in "params" |
-3001 | Could not find matched wallet. ('$address') | There is no wallet matched with given address. |
-3002 | Sending and receiving address are same. | Sending and receiving address are same. |
-3003 | Insufficient balance. | Requested value is bigger than balance. |
-3004 | Insufficient balance for fee. | Insufficient balance for fee. |
-3005 | Invalid parameter. ('$key') | Something is wrong with value. |
-4001 | Failed to sign. | Error occurs while signing |
-9999 | Somethings wrong with network ($message) | All errors while networking. $message may contains the reason of error. |