# KYC
Supported protocols:
JSON-RPC 2.0 | Websocket | IPC | Publish–subscribe |
---|---|---|---|
✓ | ✓ | ✓ | TBD |
# Scenario
All these interfaces are used to update user's KYC status to chain.
The genesis account is the initial admin user, it can handover the right to another account by calling KYC_getAdminHandoverBlock , the admin can add/remove operator by calling KYC_getUpdateOperatorBlock, the admin can add/remove user's stable coin address by calling KYC_getUpdateTradeAddressBlock. A user means a qlc address, it can have more than one stable coin address. The operator and admin can update user's KYC status by calling KYC_getUpdateStatusBlock.
# KYC_getAdminHandoverBlock
Get a contractSend block to update admin
Parameters:
admin
: current admin qlc accountsuccessor
: successor account of current admincomment
: comment message(max 128 bytes)
Returns:
block
: contract block
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getAdminHandoverBlock",
"params": [
{
"admin": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"successor": "qlc_1bwjtpipkzc7aj6hmuodncjmfsb4tou9word8bj9jxcm68cheipad54q66xe",
"comment": "t1"
}
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"type": "ContractSend",
"token": "a7e8fa30c063e96a489a47bc43909505bd86735da4a109dca28be936118a8582",
"address": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"balance": "59999999999999999",
"vote": "0",
"network": "0",
"storage": "0",
"oracle": "0",
"previous": "51ca286d74aac6730c7ef61f8a1a5e50535066d1e563829370e8bb573d14166b",
"link": "000000000000000000000000000000000000000000000000000000000000001e",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "k/KOjCeR1aFpfUVESPnuq6KjNuUi1XZ+VwsyYnj1UyGU9kLIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnQxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"povHeight": 16,
"timestamp": 1594886955,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"work": "0000000000000000",
"signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getAdminHandoverBlock",
"params": [
{
"admin": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"successor": "qlc_1bwjtpipkzc7aj6hmuodncjmfsb4tou9word8bj9jxcm68cheipad54q66xe",
"comment": "t1"
}
]
}
# KYC_getUpdateOperatorBlock
Get a contractSend block to add/remove a operator, a operator can update the KYC status.
Parameters:
admin
: current admin's qlc addressoperator
: operator's qlc addressaction
: add/removecomment
: comment message(max 128 bytes)
Returns:
block
: contract block
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getUpdateOperatorBlock",
"params": [
{
"admin": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"operator": "qlc_3gwf5kgcsdjkermpquc9y83fscibp3prk6wdd8hfpduoo81ojrfrfp7zoko3",
"action": "add",
"comment": "address1"
}
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"type": "ContractSend",
"token": "a7e8fa30c063e96a489a47bc43909505bd86735da4a109dca28be936118a8582",
"address": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"balance": "59999999999999999",
"vote": "0",
"network": "0",
"storage": "0",
"oracle": "0",
"previous": "51ca286d74aac6730c7ef61f8a1a5e50535066d1e563829370e8bb573d14166b",
"link": "000000000000000000000000000000000000000000000000000000000000001e",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "Ls0CdLuNHJysrjJmJ2vtR/GC3KoJsG2JE4tZntsvdamBWOG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYWRkcmVzczEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"povHeight": 16,
"timestamp": 1594887102,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"work": "0000000000000000",
"signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getUpdateOperatorBlock",
"params": [
{
"admin": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"operator": "qlc_3gwf5kgcsdjkermpquc9y83fscibp3prk6wdd8hfpduoo81ojrfrfp7zoko3",
"action": "add",
"comment": "address1"
}
]
}
# KYC_getUpdateStatusBlock
Get a contractSend block to update KYC status
Parameters:
operator
: operator's qlc addresschainAddress
: qlc address of the user whose state will be changedstatus
:"KYC_STATUS_NOT_STARTED" "KYC_STATUS_IN_PROGRESS" "KYC_STATUS_PROCESSING" "KYC_STATUS_FAILED_JUMIO" "KYC_STATUS_FAILED_COMPLYADVANTAGE" "KYC_STATUS_DENIED" "KYC_STATUS_PENDING" "KYC_STATUS_PENDING_INSTITUTION" "KYC_STATUS_APPROVED" "KYC_STATUS_SET_FOR_CLOSURE"
Returns:
block
: contract block
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getUpdateStatusBlock",
"params": [
{
"operator": "qlc_1zb3tn7ifmcnj9p96u63jio4qyhm6w5yfgyi55pew9dma5qus1hhwmx7989k",
"chainAddress": "qlc_3gwf5kgcsdjkermpquc9y83fscibp3prk6wdd8hfpduoo81ojrfrfp7zoko3",
"status": "KYC_STATUS_IN_PROGRESS"
}
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"type": "ContractSend",
"token": "a7e8fa30c063e96a489a47bc43909505bd86735da4a109dca28be936118a8582",
"address": "qlc_1zb3tn7ifmcnj9p96u63jio4qyhm6w5yfgyi55pew9dma5qus1hhwmx7989k",
"balance": "1",
"vote": "0",
"network": "0",
"storage": "0",
"oracle": "0",
"previous": "cb8c0be48dbdf1cc7a1db72e42bd52da90aee728f0fed0febd2e16f6b5af2848",
"link": "000000000000000000000000000000000000000000000000000000000000001e",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "ArFnL7uNHJysrjJmJ2vtR/GC3KoJsG2JE4tZntsvdamBWOG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFktZQ19TVEFUVVNfSU5fUFJPR1JFU1MAAAAAAAAAAAAA",
"povHeight": 19,
"timestamp": 1594887265,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"work": "0000000000000000",
"signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getUpdateStatusBlock",
"params": [
{
"operator": "qlc_1zb3tn7ifmcnj9p96u63jio4qyhm6w5yfgyi55pew9dma5qus1hhwmx7989k",
"chainAddress": "qlc_3gwf5kgcsdjkermpquc9y83fscibp3prk6wdd8hfpduoo81ojrfrfp7zoko3",
"status": "KYC_STATUS_IN_PROGRESS"
}
]
}
# KYC_getUpdateTradeAddressBlock
Get a contractSend block to add/remove user's stable coin address
Parameters:
admin
: current admin's qlc addresschainAddress
: user's qlc addressadd
: add/removetradeAddress
: stable coin addresscomment
: comment message(max 128 bytes)
Returns:
block
: contract block
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getUpdateTradeAddressBlock",
"params": [
{
"admin": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"chainAddress": "qlc_3gwf5kgcsdjkermpquc9y83fscibp3prk6wdd8hfpduoo81ojrfrfp7zoko3",
"action": "add",
"tradeAddress": "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
"comment": "address1"
}
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"type": "ContractSend",
"token": "a7e8fa30c063e96a489a47bc43909505bd86735da4a109dca28be936118a8582",
"address": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"balance": "59999999999999999",
"vote": "0",
"network": "0",
"storage": "0",
"oracle": "0",
"previous": "51ca286d74aac6730c7ef61f8a1a5e50535066d1e563829370e8bb573d14166b",
"link": "000000000000000000000000000000000000000000000000000000000000001e",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "Gg5uYruNHJysrjJmJ2vtR/GC3KoJsG2JE4tZntsvdamBWOG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoweGNkMmEzZDlmOTM4ZTEzY2Q5NDdlYzA1YWJjN2ZlNzM0ZGY4ZGQ4MjYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhhZGRyZXNzMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"povHeight": 27,
"timestamp": 1594887864,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"work": "0000000000000000",
"signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getUpdateTradeAddressBlock",
"params": [
{
"admin": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"chainAddress": "qlc_3gwf5kgcsdjkermpquc9y83fscibp3prk6wdd8hfpduoo81ojrfrfp7zoko3",
"action": "add",
"tradeAddress": "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
"comment": "address1"
}
]
}
# KYC_getAdmin
Get current admin
- Parameters:
- null
- Returns:
admin
: admin's qlc addresscomment
: comment of this admin
- Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getAdmin",
"params": null
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"admin": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"comment": "Initial admin"
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getAdmin",
"params": null
}
# KYC_getStatusCount
Get all KYC status count
Parameters:
- null
Returns:
result
: count
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getStatusCount",
"params": null
}
{
"jsonrpc": "2.0",
"id": 3,
"result": 1
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getStatusCount",
"params": null
}
# KYC_getStatus
Get KYC status detail info
Parameters:
count
: count you want to be returnedoffset
: offset of the records
Returns:
array of KYC status
chainAddress
: user's qlc addressstatus
: KYC status
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getStatus",
"params": [
10,
0
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": [
{
"chainAddress": "qlc_3j3yr5ofohby1d94o3kyursf9tgnotborcrnty48g3wi4ryq6bxjgaeqs1nu",
"status": "KYC_STATUS_DENIED"
}
]
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getStatus",
"params": [
10,
0
]
}
# KYC_getStatusByChainAddress
Get KYC status by qlc address
Parameters:
- qlc address
Returns:
chainAddress
: user's qlc addressstatus
: KYC status
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getStatusByChainAddress",
"params": [
"qlc_3j3yr5ofohby1d94o3kyursf9tgnotborcrnty48g3wi4ryq6bxjgaeqs1nu"
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"chainAddress": "qlc_3j3yr5ofohby1d94o3kyursf9tgnotborcrnty48g3wi4ryq6bxjgaeqs1nu",
"status": "KYC_STATUS_DENIED"
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getStatusByChainAddress",
"params": [
"qlc_3j3yr5ofohby1d94o3kyursf9tgnotborcrnty48g3wi4ryq6bxjgaeqs1nu"
]
}
# KYC_getStatusByTradeAddress
Get KYC status by stable coin address
Parameters:
- stable coin address
Returns:
chainAddress
: user's qlc addressstatus
: KYC status
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getStatusByTradeAddress",
"params": [
"0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826"
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"chainAddress": "qlc_3gwf5kgcsdjkermpquc9y83fscibp3prk6wdd8hfpduoo81ojrfrfp7zoko3",
"status": "KYC_STATUS_APPROVED"
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getStatusByTradeAddress",
"params": [
"0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826"
]
}
# KYC_getTradeAddress
Get user's stable coin address by qlc address
Parameters:
- qlc address
Returns:
chainAddress
: user's qlc addresstradeAddress
: array of stable coin addressaddress
: stable coin addresscomment
: address comment
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getTradeAddress",
"params": [
"qlc_3j3yr5ofohby1d94o3kyursf9tgnotborcrnty48g3wi4ryq6bxjgaeqs1nu"
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"chainAddress": "qlc_3j3yr5ofohby1d94o3kyursf9tgnotborcrnty48g3wi4ryq6bxjgaeqs1nu",
"tradeAddress": [
{
"address": "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
"comment": "t1"
}
]
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getTradeAddress",
"params": [
"qlc_3j3yr5ofohby1d94o3kyursf9tgnotborcrnty48g3wi4ryq6bxjgaeqs1nu"
]
}
# KYC_getOperatorCount
Get all operator count
Parameters:
- null
Returns:
result
: count
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getOperatorCount",
"params": null
}
{
"jsonrpc": "2.0",
"id": 3,
"result": 1
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getOperatorCount",
"params": null
}
# KYC_getOperator
Get operator detail info
Parameters:
count
: count you want to be returnedoffset
: offset of the records
Returns:
array of operator
operator
:operator's qlc addresscomment
: operator comment
Example:
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getOperator",
"params": [
10,
0
]
}
{
"jsonrpc": "2.0",
"id": 3,
"result": [
{
"operator": "qlc_1zb3tn7ifmcnj9p96u63jio4qyhm6w5yfgyi55pew9dma5qus1hhwmx7989k",
"comment": "op3"
},
{
"operator": "qlc_1bwjtpipkzc7aj6hmuodncjmfsb4tou9word8bj9jxcm68cheipad54q66xe",
"comment": "op1"
}
]
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "KYC_getOperator",
"params": [
10,
0
]
}