3 去中心化撮合应用示例

恒为区块链去中心化撮合模块实现了不同通证按照比率进行兑换的功能,它是基于区块链账本实现的。在去中心化撮合模块中,HWT和其他二级同质化通证之间,可以任意两两组合创建交易对。撮合系统按照交易对之间的比率和时间来完成撮合。撮合的原则:比率优先,相同比率的时间优先。

用户可以通过以下JSON-RPC接口来实现去中心化撮合的功能:

创建挂单

查询挂单结果

查看账号挂单

查看挂单簿

取消挂单

下面我们通过一个例子,模拟在去中心化撮合中一个挂单从创建到成交的生命周期:

在本例中,Alice和Bob想通过去中心化撮合功能兑换数字资产。经历了查询当前数字资产余额、创建挂单、查看挂单,由于挂单后没有成交,取消后又重新挂单,最终成交,并核查了撮合结果。具体操作步骤如下:

3.1 准备两个交易账户

3.2 Alice创建一个AAA/BBB的交易对挂单

3.3 Alice查看自己的挂单交易的详情

3.4 Alice查看自己的挂单簿

3.5 Bob创建一个BBB/AAA的交易对挂单

3.6 Bob查看自己的挂单

3.7 Bob查看链上撮合系统大厅中的挂单簿

3.8 Bob取消自己的挂单

3.9 Bob重新创建一个挂单

3.10 Bob查看自己的挂单交易的详情

3.11 Alice查看自己的挂单

3.12 Alice查看自己的挂单的撮合结果

3.13 Bob查看自己的挂单

3.14 Bob查看自己的挂单的撮合结果

3.1 准备两个交易账户

Alice和Bob分别拥有各自的区块链账户,他们想交换手中的BBB和AAA通证。首先,通过“account_lines”接口分别查询Alice和Bob账户的二级通证余额。

Alice账号:hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd

Bob账号:hPcNzota6B8YBokrYtcTNqQVCngtbnWfux

查询Alice二级通证余额:

请求:

{
    "method": "account_lines",
    "params": [
        {
            "account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd"
        }
    ]
}

响应:

{
    "result": {
        "account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
        "ledger_current_index": 553,
        "lines": [
            {
                "account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "balance": "100000",
                "currency": "BBB",
                "limit": "10000000",
                "limit_peer": "0",
                "quality_in": 0,
                "quality_out": 0
            },
            {
                "account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "balance": "5000",
                "currency": "AAA",
                "limit": "10000000",
                "limit_peer": "0",
                "quality_in": 0,
                "quality_out": 0
            }
        ],
        "status": "success",
        "validated": false
    }
}

Alice持有账户hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA发行的100000BBB和5000AAA。

查询Bob二级通证余额: 请求:

{
    "method": "account_lines",
    "params": [
        {
            "account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux"
        }
    ]
}

响应:

{
    "result": {
        "account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
        "ledger_current_index": 561,
        "lines": [
            {
                "account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "balance": "100000",
                "currency": "BBB",
                "limit": "10000000",
                "limit_peer": "0",
                "quality_in": 0,
                "quality_out": 0
            },
            {
                "account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "balance": "5000",
                "currency": "AAA",
                "limit": "10000000",
                "limit_peer": "0",
                "quality_in": 0,
                "quality_out": 0
            }
        ],
        "status": "success",
        "validated": false
    }
}

Bob持有账户hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA发行的100000BBB和5000AAA。

3.2 Alice创建一个AAA/BBB的交易对挂单

Alice想用手中的100AAA,去兑换700BBB。通过“submit”接口创建OfferCreate类型的挂单交易。TakerGets表示交易对手得到的通证,TakerPays表示交易对手支付的通证。

请求:

{
    "method": "submit",
    "params": [{
        "secret": "ssqtQ2Jc*********ARqb9EYe",
        "tx_json": {
            "TransactionType": "OfferCreate",
            "Account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
            "TakerGets": {
                "currency": "AAA",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "100"
            },
            "TakerPays": {
                "currency": "BBB",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "700"
            }
        }
    }]
}

响应:

{
    "result": {
        "engine_result": "tesSUCCESS",
        "engine_result_code": 0,
        "engine_result_message": "The transaction was applied. Only final in a validated ledger.",
        "status": "success",
        "tx_blob": "1200072280000000240000000364D518DE76816D8000000000000000000000000000434E5900000000002E244E6F20104E57C0C60BD823CB312BF10928C765D5038D7EA4C6800000000000000000000000000055534400000000002E244E6F20104E57C0C60BD823CB312BF10928C76840000000000027107321029A80E85C9EAFE4CF6376524AF360724D4ECE4F2B6197A2E1172E81CC071B7D0C74463044022011DD92C442CE9FFFABA68CB33CD74984C7D07232678BD7FAD61D01ECE579757702201C6A432C01DDD96DB7EF852FBF47BA3D8843D3081B14AC53A96A6A92BE221C8C81148B240FCDC580525F0BFCABB590F434252AC36AF8",
        "tx_json": {
            "Account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
            "Fee": "10000",
            "Flags": 2147483648,
            "Sequence": 3,
            "SigningPubKey": "029A80E85C9EAFE4CF6376524AF360724D4ECE4F2B6197A2E1172E81CC071B7D0C",
            "TakerGets": {
                "currency": "AAA",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "100"
            },
            "TakerPays": {
                "currency": "BBB",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "700"
            },
            "TransactionType": "OfferCreate",
            "TxnSignature": "3044022011DD92C442CE9FFFABA68CB33CD74984C7D07232678BD7FAD61D01ECE579757702201C6A432C01DDD96DB7EF852FBF47BA3D8843D3081B14AC53A96A6A92BE221C8C",
            "hash": "6AC9F34B7829FCE1897AB1841D842EBEEDF64C1FC3D0B38E5C51A4F0145CB1BA"
        }
    }
}

3.3 Alice查看自己的挂单交易的详情

Alice完成挂单后,可以通过“tx”接口根据挂单交易hash查询挂单在链上的详细信息。

请求:

{
    "method": "tx",
    "params": [
        {
            "transaction": "6AC9F34B7829FCE1897AB1841D842EBEEDF64C1FC3D0B38E5C51A4F0145CB1BA",
            "binary": false
        }
    ]
}

响应:

{
    "result": {
        "Account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
        "Fee": "10000",
        "Flags": 2147483648,
        "Sequence": 3,
        "SigningPubKey": "029A80E85C9EAFE4CF6376524AF360724D4ECE4F2B6197A2E1172E81CC071B7D0C",
        "TakerGets": {
            "currency": "AAA",
            "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
            "value": "100"
        },
        "TakerPays": {
            "currency": "BBB",
            "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
            "value": "700"
        },
        "TransactionType": "OfferCreate",
        "TxnSignature": "3044022011DD92C442CE9FFFABA68CB33CD74984C7D07232678BD7FAD61D01ECE579757702201C6A432C01DDD96DB7EF852FBF47BA3D8843D3081B14AC53A96A6A92BE221C8C",
        "date": 628326350,
        "hash": "6AC9F34B7829FCE1897AB1841D842EBEEDF64C1FC3D0B38E5C51A4F0145CB1BA",
        "inLedger": 77,
        "ledger_current_index": 89,
        "ledger_index": 77,
        "meta": {
            "AffectedNodes": [
                {
                    "CreatedNode": {
                        "LedgerEntryType": "Offer",
                        "LedgerIndex": "0FB6597BF3397BE7CEF9BCBE77CE346468DC2FA97B656866D5A8B65ECE5E146D",
                        "NewFields": {
                            "Account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
                            "BookDirectory": "5319B6ABC4C54DB20FC004231D9515081371E71E7F4183B85518DE76816D8000",
                            "Sequence": 3,
                            "TakerGets": {
                                "currency": "AAA",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "100"
                            },
                            "TakerPays": {
                                "currency": "BBB",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "700"
                            },
                            "TotalTakerGets": {
                                "currency": "AAA",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "100"
                            },
                            "TotalTakerPays": {
                                "currency": "BBB",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "700"
                            }
                        }
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Account": "hHb9CJAWyB4hj91VRWn96DkukG4bwdtyTr",
                            "Balance": "99999990000140000",
                            "Flags": 0,
                            "OwnerCount": 0,
                            "Sequence": 6
                        },
                        "LedgerEntryType": "AccountRoot",
                        "LedgerIndex": "2B6AC232AA4C4BE41BF49D2459FA4A0347E1B543A4C92FCEE0821C0201E2E9A8",
                        "PreviousFields": {
                            "Balance": "99999990000130000"
                        },
                        "PreviousTxnID": "0349C6FC223B5B308087B4A2BCDF7524458170C349F66F575557769C6005BACA",
                        "PreviousTxnLgrSeq": 28
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
                            "Balance": "1999970000",
                            "Flags": 0,
                            "OwnerCount": 3,
                            "Sequence": 4
                        },
                        "LedgerEntryType": "AccountRoot",
                        "LedgerIndex": "3E85929FA644A46D1A96D685D00B5A4BDEB90FD1D7D7FCD1C556DDC79CDF8101",
                        "PreviousFields": {
                            "Balance": "1999980000",
                            "OwnerCount": 2,
                            "Sequence": 3
                        },
                        "PreviousTxnID": "B5B98C9C6BE09F8BF9AC50DECADC3F7800C26EE3FFD6749E52706B06949E107F",
                        "PreviousTxnLgrSeq": 21
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Flags": 0,
                            "Owner": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
                            "RootIndex": "4239D02F30951004B5E01A1A4026A0B1B5AAA7B0B50B17709B18225CB4C160F0"
                        },
                        "LedgerEntryType": "DirectoryNode",
                        "LedgerIndex": "4239D02F30951004B5E01A1A4026A0B1B5AAA7B0B50B17709B18225CB4C160F0"
                    }
                },
                {
                    "CreatedNode": {
                        "LedgerEntryType": "DirectoryNode",
                        "LedgerIndex": "5319B6ABC4C54DB20FC004231D9515081371E71E7F4183B85518DE76816D8000",
                        "NewFields": {
                            "ExchangeRate": "5518DE76816D8000",
                            "RootIndex": "5319B6ABC4C54DB20FC004231D9515081371E71E7F4183B85518DE76816D8000",
                            "TakerGetsCurrency": "0000000000000000000000005553440000000000",
                            "TakerGetsIssuer": "2E244E6F20104E57C0C60BD823CB312BF10928C7",
                            "TakerPaysCurrency": "000000000000000000000000434E590000000000",
                            "TakerPaysIssuer": "2E244E6F20104E57C0C60BD823CB312BF10928C7"
                        }
                    }
                }
            ],
            "TransactionIndex": 0,
            "TransactionResult": "tesSUCCESS"
        },
        "status": "success",
        "validated": true
    }
}

3.4 Alice查看自己的挂单薄

Alice根据自己的区块链账号,可以通过“account_offers”接口查询该账号目前在链上未成交的挂单列表。

请求:

{
    "method": "account_offers",
    "params": [
        {
            "account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd"
        }
    ]
}

响应:

{
    "result": {
        "account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
        "ledger_current_index": 517,
        "offers": [
            {
                "flags": 0,
                "quality": "7",
                "seq": 3,
                "taker_gets": {
                    "currency": "AAA",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "100"
                },
                "taker_pays": {
                    "currency": "BBB",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "700"
                }
            }
        ],
        "status": "success",
        "validated": false
    }
}

Alice的挂单因为没有成交,所以可以通过“account_offers”接口查到他在链上创建的挂单。如果挂单完成成交,将返回空的列表。

3.5 Bob创建一个BBB/AAA的交易对挂单

在Alice挂单后,Bob正好想用手中的BBB兑换成AAA。他先挂了一个65BBB/10AAA的订单。

请求:

{
    "method": "submit",
    "params": [{
        "secret": "snaAAALj********vEobavo4",
        "tx_json": {
            "TransactionType": "OfferCreate",
            "Account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
            "TakerGets": {
                "currency": "BBB",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "65"
            },
            "TakerPays": {
                "currency": "AAA",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "10"
            }
        }
    }]
}

响应:

{
    "result": {
        "engine_result": "tesSUCCESS",
        "engine_result_code": 0,
        "engine_result_message": "The transaction was applied. Only final in a validated ledger.",
        "status": "success",
        "tx_blob": "1200072280000000240000000364D4C38D7EA4C6800000000000000000000000000055534400000000002E244E6F20104E57C0C60BD823CB312BF10928C765D4D717B72F0A4000000000000000000000000000434E5900000000002E244E6F20104E57C0C60BD823CB312BF10928C7684000000000002710732102FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F874473045022100AAD484E970349A64E3D63D813AAAF5DFF98592366BE5A848D58CFD729085861402201907AFBDBE8118ABDF3197E785E665A1AF67B7FA531CE2AF0DDAC0FB82E57EED8114F7FD027F816E04259DE7BCEA1058956FC51A3B61",
        "tx_json": {
            "Account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
            "Fee": "10000",
            "Flags": 2147483648,
            "Sequence": 3,
            "SigningPubKey": "02FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F8",
            "TakerGets": {
                "currency": "BBB",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "65"
            },
            "TakerPays": {
                "currency": "AAA",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "10"
            },
            "TransactionType": "OfferCreate",
            "TxnSignature": "3045022100AAD484E970349A64E3D63D813AAAF5DFF98592366BE5A848D58CFD729085861402201907AFBDBE8118ABDF3197E785E665A1AF67B7FA531CE2AF0DDAC0FB82E57EED",
            "hash": "C648531C909FDA611360A4255D030D3081AB2D4A9C38A31B6F4D74D035CDF878"
        }
    }
}

3.6 Bob查看自己的挂单

Bob挂单后通过“account_offers”接口查看自己的挂单列表。

请求:

{
    "method": "account_offers",
    "params": [
        {
            "account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux"
        }
    ]
}

响应:

{
    "result": {
        "account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
        "ledger_current_index": 571,
        "offers": [
            {
                "flags": 0,
                "quality": "0.1538461538461538",
                "seq": 3,
                "taker_gets": {
                    "currency": "BBB",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "65"
                },
                "taker_pays": {
                    "currency": "AAA",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "10"
                }
            }
        ],
        "status": "success",
        "validated": false
    }
}

由于Bob挂单和Alice挂单的价格不吻合,无法撮合。因此,这里可以看到Bob的挂单并没有成交。

3.7 Bob查看链上撮合系统大厅中的挂单簿

Bob想要自己提交的BBB/AAA交易对尽快成交,所以通过“book_offers”接口查看AAA/BBB交易对在挂单簿中的情况。需要注意的是,因为Bob挂的是BBB/AAA的交易对,其对手挂单是反向的,即AAA/BBB。

请求:

{
    "method": "book_offers",
    "params": [{
            "taker":"hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
            "taker_gets": {
                "currency": "AAA",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA"
            },
            "taker_pays": {
                "currency": "BBB",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA"
            }
    }]
}

响应:

{
    "result": {
        "ledger_current_index": 1030,
        "offers": [
            {
                "Account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
                "BookDirectory": "5319B6ABC4C54DB20FC004231D9515081371E71E7F4183B85518DE76816D8000",
                "BookNode": "0000000000000000",
                "Flags": 0,
                "LedgerEntryType": "Offer",
                "OwnerNode": "0000000000000000",
                "PreviousTxnID": "6AC9F34B7829FCE1897AB1841D842EBEEDF64C1FC3D0B38E5C51A4F0145CB1BA",
                "PreviousTxnLgrSeq": 77,
                "Sequence": 3,
                "TakerGets": {
                    "currency": "AAA",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "100"
                },
                "TakerPays": {
                    "currency": "BBB",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "700"
                },
                "TotalTakerGets": {
                    "currency": "AAA",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "100"
                },
                "TotalTakerPays": {
                    "currency": "BBB",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "700"
                },
                "index": "0FB6597BF3397BE7CEF9BCBE77CE346468DC2FA97B656866D5A8B65ECE5E146D",
                "owner_funds": "5000",
                "quality": "7"
            }
        ],
        "status": "success",
        "validated": false
    }
}

3.8 Bob取消自己的挂单

Bob发现自己挂的单子价格太低,所以没有成交。他决定先通过“submit”接口的OfferCancel交易类型取消之前创建的挂单,根据市场价格重新再创建挂单。注意,这里的OfferSequence是Bob需要取消挂单的Sequence。

请求:

{
    "method": "submit",
    "params": [{
        "secret": "snaAAALj********vEobavo4",
        "tx_json": {
            "TransactionType": "OfferCancel",
            "Account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
            "OfferSequence": 3
        }
    }]
}

响应:

{
    "result": {
        "engine_result": "tesSUCCESS",
        "engine_result_code": 0,
        "engine_result_message": "The transaction was applied. Only final in a validated ledger.",
        "status": "success",
        "tx_blob": "12000822800000002400000005201900000003684000000000002710732102FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F874463044022044B2BBCC2D588728CE869881A6D6CCE8E922447C69179FFB3493B41EE70AE83202201E5676D3D5D384D37976F97F59D6FCC4823C0629D75BFF364AE1126C5CF8A0AB8114F7FD027F816E04259DE7BCEA1058956FC51A3B61",
        "tx_json": {
            "Account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
            "Fee": "10000",
            "Flags": 2147483648,
            "OfferSequence": 3,
            "Sequence": 5,
            "SigningPubKey": "02FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F8",
            "TransactionType": "OfferCancel",
            "TxnSignature": "3044022044B2BBCC2D588728CE869881A6D6CCE8E922447C69179FFB3493B41EE70AE83202201E5676D3D5D384D37976F97F59D6FCC4823C0629D75BFF364AE1126C5CF8A0AB",
            "hash": "8B805521ADCBF5E52368E79649489650BCBE6693245CF6DEE3E12E31863721E6"
        }
    }
}

3.9 Bob重新创建一个挂单

Bob根据市场价格又创建一个70BBB/10AAA的挂单。 请求:

{
    "method": "submit",
    "params": [{
        "secret": "snaAAALj********vEobavo4",
        "tx_json": {
            "TransactionType": "OfferCreate",
            "Account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
            "TakerGets": {
                "currency": "BBB",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "70"
            },
            "TakerPays": {
                "currency": "AAA",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "10"
            }
        }
    }]
}

响应:

{
    "result": {
        "engine_result": "tesSUCCESS",
        "engine_result_code": 0,
        "engine_result_message": "The transaction was applied. Only final in a validated ledger.",
        "status": "success",
        "tx_blob": "1200072280000000240000000464D4C38D7EA4C6800000000000000000000000000055534400000000002E244E6F20104E57C0C60BD823CB312BF10928C765D4D8DE76816D8000000000000000000000000000434E5900000000002E244E6F20104E57C0C60BD823CB312BF10928C7684000000000002710732102FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F874473045022100C0F9F661A34A3BFCF3E5A414D45F4291405C47DEC638E45C91957B76554A7C57022035EC9D3DB09FCD054423567532AF0DE9B2DBED33EA68112D80293D1382CA9E4B8114F7FD027F816E04259DE7BCEA1058956FC51A3B61",
        "tx_json": {
            "Account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
            "Fee": "10000",
            "Flags": 2147483648,
            "Sequence": 4,
            "SigningPubKey": "02FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F8",
            "TakerGets": {
                "currency": "BBB",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "70"
            },
            "TakerPays": {
                "currency": "AAA",
                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "value": "10"
            },
            "TransactionType": "OfferCreate",
            "TxnSignature": "3045022100C0F9F661A34A3BFCF3E5A414D45F4291405C47DEC638E45C91957B76554A7C57022035EC9D3DB09FCD054423567532AF0DE9B2DBED33EA68112D80293D1382CA9E4B",
            "hash": "313D161567319A4051CB0E9184FE082A3C4E1E5567D8324779EE8150513F1C94"
        }
    }
}

3.10 Bob查看自己的挂单交易的详情

Bob通过根据挂单交易hash查看挂单详情。

请求:

 {
    "method": "tx",
    "params": [
        {
            "transaction": "313D161567319A4051CB0E9184FE082A3C4E1E5567D8324779EE8150513F1C94",
            "binary": false
        }
    ]
}

响应:

 {
    "result": {
        "Account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
        "Fee": "10000",
        "Flags": 2147483648,
        "Sequence": 4,
        "SigningPubKey": "02FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F8",
        "TakerGets": {
            "currency": "BBB",
            "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
            "value": "70"
        },
        "TakerPays": {
            "currency": "AAA",
            "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
            "value": "10"
        },
        "TransactionType": "OfferCreate",
        "TxnSignature": "3045022100C0F9F661A34A3BFCF3E5A414D45F4291405C47DEC638E45C91957B76554A7C57022035EC9D3DB09FCD054423567532AF0DE9B2DBED33EA68112D80293D1382CA9E4B",
        "date": 628338200,
        "hash": "313D161567319A4051CB0E9184FE082A3C4E1E5567D8324779EE8150513F1C94",
        "inLedger": 1262,
        "ledger_current_index": 1274,
        "ledger_index": 1262,
        "meta": {
            "AffectedNodes": [
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
                            "Balance": "1999960000",
                            "Flags": 0,
                            "OwnerCount": 3,
                            "Sequence": 5
                        },
                        "LedgerEntryType": "AccountRoot",
                        "LedgerIndex": "0F00CD13BA68C96D6E001F1F1F4D0FD440E2D496EA933A6ABF3F1D58CB04DF2E",
                        "PreviousFields": {
                            "Balance": "1999970000",
                            "Sequence": 4
                        },
                        "PreviousTxnID": "C648531C909FDA611360A4255D030D3081AB2D4A9C38A31B6F4D74D035CDF878",
                        "PreviousTxnLgrSeq": 567
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
                            "BookDirectory": "5319B6ABC4C54DB20FC004231D9515081371E71E7F4183B85518DE76816D8000",
                            "BookNode": "0000000000000000",
                            "Flags": 0,
                            "OwnerNode": "0000000000000000",
                            "Sequence": 3,
                            "TakerGets": {
                                "currency": "AAA",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "90"
                            },
                            "TakerPays": {
                                "currency": "BBB",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "630"
                            },
                            "TotalTakerGets": {
                                "currency": "AAA",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "100"
                            },
                            "TotalTakerPays": {
                                "currency": "BBB",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "700"
                            }
                        },
                        "LedgerEntryType": "Offer",
                        "LedgerIndex": "0FB6597BF3397BE7CEF9BCBE77CE346468DC2FA97B656866D5A8B65ECE5E146D",
                        "PreviousFields": {
                            "TakerGets": {
                                "currency": "AAA",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "100"
                            },
                            "TakerPays": {
                                "currency": "BBB",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "700"
                            }
                        },
                        "PreviousTxnID": "6AC9F34B7829FCE1897AB1841D842EBEEDF64C1FC3D0B38E5C51A4F0145CB1BA",
                        "PreviousTxnLgrSeq": 77
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Account": "hHb9CJAWyB4hj91VRWn96DkukG4bwdtyTr",
                            "Balance": "99999990000180000",
                            "Flags": 0,
                            "OwnerCount": 0,
                            "Sequence": 6
                        },
                        "LedgerEntryType": "AccountRoot",
                        "LedgerIndex": "2B6AC232AA4C4BE41BF49D2459FA4A0347E1B543A4C92FCEE0821C0201E2E9A8",
                        "PreviousFields": {
                            "Balance": "99999990000170000"
                        },
                        "PreviousTxnID": "C648531C909FDA611360A4255D030D3081AB2D4A9C38A31B6F4D74D035CDF878",
                        "PreviousTxnLgrSeq": 567
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Balance": {
                                "currency": "AAA",
                                "issuer": "hhhhhhhhhhhhhhhhhhhhBZbvji",
                                "value": "-5010"
                            },
                            "Flags": 131072,
                            "HighLimit": {
                                "currency": "AAA",
                                "issuer": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
                                "value": "10000000"
                            },
                            "HighNode": "0000000000000000",
                            "LowLimit": {
                                "currency": "AAA",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "0"
                            },
                            "LowNode": "0000000000000000"
                        },
                        "LedgerEntryType": "HWCHAINState",
                        "LedgerIndex": "4D3027A724146B909AD8752BDA1A9ECF697BF1C9A3F0A39ED91FAF72176E2440",
                        "PreviousFields": {
                            "Balance": {
                                "currency": "AAA",
                                "issuer": "hhhhhhhhhhhhhhhhhhhhBZbvji",
                                "value": "-5000"
                            }
                        },
                        "PreviousTxnID": "4CD691AB95FFE2B554C6D3361BBF58D43227B91A310DB4D2F100291DC0572FB6",
                        "PreviousTxnLgrSeq": 28
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Balance": {
                                "currency": "BBB",
                                "issuer": "hhhhhhhhhhhhhhhhhhhhBZbvji",
                                "value": "-99930"
                            },
                            "Flags": 131072,
                            "HighLimit": {
                                "currency": "BBB",
                                "issuer": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
                                "value": "10000000"
                            },
                            "HighNode": "0000000000000000",
                            "LowLimit": {
                                "currency": "BBB",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "0"
                            },
                            "LowNode": "0000000000000000"
                        },
                        "LedgerEntryType": "HWCHAINState",
                        "LedgerIndex": "7D866E7F3FB00E92580F5F8B32AB475D03FEAE147AAFF3157BA4E474490356A2",
                        "PreviousFields": {
                            "Balance": {
                                "currency": "BBB",
                                "issuer": "hhhhhhhhhhhhhhhhhhhhBZbvji",
                                "value": "-100000"
                            }
                        },
                        "PreviousTxnID": "63694D434917F6725B63567A524F7FA0F49E4577681B9BFB74C1BC1662B0505F",
                        "PreviousTxnLgrSeq": 24
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Balance": {
                                "currency": "AAA",
                                "issuer": "hhhhhhhhhhhhhhhhhhhhBZbvji",
                                "value": "-4990"
                            },
                            "Flags": 131072,
                            "HighLimit": {
                                "currency": "AAA",
                                "issuer": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
                                "value": "10000000"
                            },
                            "HighNode": "0000000000000000",
                            "LowLimit": {
                                "currency": "AAA",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "0"
                            },
                            "LowNode": "0000000000000000"
                        },
                        "LedgerEntryType": "HWCHAINState",
                        "LedgerIndex": "BC116352359C6D47756C5FDB30D1EDE95433FF696B519E217D9915D7B46FA57D",
                        "PreviousFields": {
                            "Balance": {
                                "currency": "AAA",
                                "issuer": "hhhhhhhhhhhhhhhhhhhhBZbvji",
                                "value": "-5000"
                            }
                        },
                        "PreviousTxnID": "F7091B4A31EE908A2BED778F0D1385FCEB1EC4CE9662F15D108038DBE655D6CA",
                        "PreviousTxnLgrSeq": 28
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Balance": {
                                "currency": "BBB",
                                "issuer": "hhhhhhhhhhhhhhhhhhhhBZbvji",
                                "value": "-100070"
                            },
                            "Flags": 131072,
                            "HighLimit": {
                                "currency": "BBB",
                                "issuer": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
                                "value": "10000000"
                            },
                            "HighNode": "0000000000000000",
                            "LowLimit": {
                                "currency": "BBB",
                                "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                                "value": "0"
                            },
                            "LowNode": "0000000000000000"
                        },
                        "LedgerEntryType": "HWCHAINState",
                        "LedgerIndex": "D9478A109CD2C17E75A04E4F18B4A1D4FD8AFCCFC92742A8F72AD0BB6C640E77",
                        "PreviousFields": {
                            "Balance": {
                                "currency": "BBB",
                                "issuer": "hhhhhhhhhhhhhhhhhhhhBZbvji",
                                "value": "-100000"
                            }
                        },
                        "PreviousTxnID": "5C32282DDFF77955238D2C73009DD796A04B430073E302C56EB05337F8EF150C",
                        "PreviousTxnLgrSeq": 24
                    }
                }
            ],
            "TransactionIndex": 0,
            "TransactionResult": "tesSUCCESS"
        },
        "status": "success",
        "validated": true
    }
}

从上面可以看出“ModifiedNode”中,"LedgerEntryType": "Offer", 的部分,Alice的账号中挂单中 AAA由100变成了90,BBB由700变成了630,说明Alice的挂单已经部分成交。Bob的账号没有出现在挂单中,说明完全成交。"LedgerEntryType": "HWCHAINState"中,Alice的账号中AAA减少了10,BBB增加了70;Bob的账号中 AAA增加了10,BBB减少了70,挂单已经被撮合成交完成。

3.11 Alice查看自己的挂单

请求:

{
    "method": "account_offers",
    "params": [
        {
            "account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd"
        }
    ]
}

响应:

{
    "result": {
        "account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
        "ledger_current_index": 1525,
        "offers": [
            {
                "flags": 0,
                "quality": "7",
                "seq": 3,
                "taker_gets": {
                    "currency": "AAA",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "90"
                },
                "taker_pays": {
                    "currency": "BBB",
                    "issuer": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                    "value": "630"
                }
            }
        ],
        "status": "success",
        "validated": false
    }
}

这个时候可以看到Alice的挂单被部分成交,还剩下未成交部分。

3.12 Alice查看自己的挂单的撮合结果

Alice通过“account_lines”接口查询账户剩余的二级通证,发现少了10AAA,多了70BBB。

请求:

{
    "method": "account_lines",
    "params": [
        {
            "account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd"
        }
    ]
}

响应:

{
    "result": {
        "account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
        "ledger_current_index": 1383,
        "lines": [
            {
                "account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "balance": "100070",
                "currency": "BBB",
                "limit": "10000000",
                "limit_peer": "0",
                "quality_in": 0,
                "quality_out": 0
            },
            {
                "account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "balance": "4990",
                "currency": "AAA",
                "limit": "10000000",
                "limit_peer": "0",
                "quality_in": 0,
                "quality_out": 0
            }
        ],
        "status": "success",
        "validated": false
    }
}

3.13 Bob查看自己的挂单

请求:

{
    "method": "account_offers",
    "params": [
        {
            "account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux"
        }
    ]
}

响应:

{
    "result": {
        "account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
        "ledger_current_index": 1505,
        "offers": [],
        "status": "success",
        "validated": false
    }
}

这个时候Bob已经没有挂单。

3.14 Bob查看自己的挂单的撮合结果

Bob通过“account_lines”接口查询账户剩余的二级通证,发现少了70BBB,多了10AAA。

请求:

{
    "method": "account_lines",
    "params": [
        {
            "account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux"
        }
    ]
}

响应:

{
    "result": {
        "account": "hPcNzota6B8YBokrYtcTNqQVCngtbnWfux",
        "ledger_current_index": 1379,
        "lines": [
            {
                "account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "balance": "99930",
                "currency": "BBB",
                "limit": "10000000",
                "limit_peer": "0",
                "quality_in": 0,
                "quality_out": 0
            },
            {
                "account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
                "balance": "5010",
                "currency": "AAA",
                "limit": "10000000",
                "limit_peer": "0",
                "quality_in": 0,
                "quality_out": 0
            }
        ],
        "status": "success",
        "validated": false
    }
}

results matching ""

    No results matching ""