{"id":22994295,"url":"https://github.com/jccdex/jcc_rpc_java","last_synced_at":"2025-08-13T22:31:35.526Z","repository":{"id":53070953,"uuid":"161753896","full_name":"JCCDex/jcc_rpc_java","owner":"JCCDex","description":"A java restful api for interacting with the jingchang server","archived":false,"fork":false,"pushed_at":"2022-11-16T01:49:06.000Z","size":102,"stargazers_count":2,"open_issues_count":2,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-21T02:21:09.995Z","etag":null,"topics":["blockchain","cross-chain","dex","java","jccdex","jingchang","rest-api","rpc"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JCCDex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-14T08:21:03.000Z","updated_at":"2021-04-08T02:55:52.000Z","dependencies_parsed_at":"2023-01-23T08:01:02.204Z","dependency_job_id":null,"html_url":"https://github.com/JCCDex/jcc_rpc_java","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/JCCDex/jcc_rpc_java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JCCDex%2Fjcc_rpc_java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JCCDex%2Fjcc_rpc_java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JCCDex%2Fjcc_rpc_java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JCCDex%2Fjcc_rpc_java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JCCDex","download_url":"https://codeload.github.com/JCCDex/jcc_rpc_java/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JCCDex%2Fjcc_rpc_java/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270329112,"owners_count":24565770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","cross-chain","dex","java","jccdex","jingchang","rest-api","rpc"],"created_at":"2024-12-15T05:17:43.618Z","updated_at":"2025-08-13T22:31:34.956Z","avatar_url":"https://github.com/JCCDex.png","language":"Java","readme":"\u003c!-- markdownlint-disable MD024 --\u003e\n\n# jcc_rpc_java\n\njcc rpc java version\n\n[![Build Status](https://travis-ci.com/JCCDex/jcc_rpc_java.svg?branch=master)](https://travis-ci.com/JCCDex/jcc_rpc_java)\n[![Coverage Status](https://coveralls.io/repos/github/JCCDex/jcc_rpc_java/badge.svg?branch=master)](https://coveralls.io/github/JCCDex/jcc_rpc_java?branch=master)\n[![JitPack](https://jitpack.io/v/JCCDex/jcc_rpc_java.svg)](https://jitpack.io/#JCCDex/jcc_rpc_java)\n\n## Usage of jcc_rpc_java API\n\n## JCallback interface\n\n```javascript\n/**\n*\n* @param code     code from jingchang api response, if the code is equal to 0\n*                 that means response result is correct, otherwise means wrong.\n* @param response response result from jingchang api\n*/\nvoid onResponse(String code, String response);\n\nvoid onFail(Exception e);\n```\n\n### Create JccdexUrl\n\n```javascript\nJccdexUrl jccUrl = new JccdexUrl(\"xxx\", true);// https://xxx:443\nJccdexUrl jccUrl = new JccdexUrl(\"xxx\", false);// http://xxx:80\nor\nJccdexUrl jccUrl = new JccdexUrl(\"xxx\", true, 8081);// https://xxx:8081\n```\n\n## NodeRpc接口\n\n### 转账\n\n```java\n// 需引入底层签名包 https://jitpack.io/#JCCDex/jingtum-lib-java/v1.0.4-alpha\n// 转账地址\nString account = \"\";\n// 转账密钥\nString secret = \"\";\n// 转入地址\nString to = \"\";\n// 转账数量\nString value = \"\";\n// 转账token\nString token = \"\";\n// token发行地址\nString issuer = \"\";\n// token不为swt时，需要issuer和token名称\nAmount amount = new Amount(new BigDecimal(value), token.toUpperCase(), issuer);\n\n// token为swt时, 不需要issuer和token名称\n// Amount amount = new Amount(new BigDecimal(1));\nPayment payment = new Payment();\npayment.as(AccountID.Account, account);\npayment.as(AccountID.Destination, to);\npayment.as(Amount.Amount, amount);\npayment.as(Amount.Fee, \"100\");\npayment.flags(new UInt32(0));\n\n// 正式链的rpc节点可通过https://gateway.swtc.top/rpcservice获取\n// 建议节点定期更新，防止因为节点变更导致不可用\nJccdexUrl jccUrl = new JccdexUrl(\"124.93.26.68\", false, 50333);\nJccdexNodeRpc nodeRpc = JccdexNodeRpc.getInstance();\nnodeRpc.setmBaseUrl(jccUrl);\n\n// 获取交易sequence\nnodeRpc.requestSequence(account, new JCallback() {\n\n    @Override\n    public void onResponse(String code, String response) {\n        System.out.println(code);\n        System.out.println(response);\n        // code为success表示获取sequence成功\n        if (code.equals(\"success\")) {\n            int sequence = JSONObject.parseObject(response).getJSONObject(\"result\").getJSONObject(\"account_data\").getIntValue(\"Sequence\");\n            payment.sequence(new UInt32(sequence));\n            SignedTransaction tx = null;\n            // 交易本地签名\n            try {\n                tx = payment.sign(secret);\n            } catch (Exception e) {\n                // 签名异常\n                // 根据实际需求做下一步操作\n                return;\n            }\n            // 交易hash, 和最后上链的hash一致。\n            Hash256 hash = tx.hash;\n            String blob = tx.tx_blob;\n            System.out.println(\"交易blob: \" + tx.tx_blob);\n            System.out.println(\"交易hash: \" + hash.toHex());\n            // 提交签名内容发起转账\n            nodeRpc.transfer(blob, new JCallback() {\n                @Override\n                public void onResponse(String code, String response) {\n                    System.out.println(code);\n                    System.out.println(response);\n                    // code说明见http://developer.jingtum.com/error_code.html\n                    // 一般情况下code为tesSUCCESS， 就表示交易成功\n                    // 但是也存在在tesSUCCESS情况下，实际没有成功上链的情况，最好提交交易过后，根据hash做二次验证\n                    // 节点每10s出块，建议异步验证交易详情，时间间隔建议最少10s之后\n                    // 根据业务需求决定是否做二次验证\n\n                    // 验证调用伪代码\n                    // nodeRpc.requestTx(hash.toHex(), new JCallback())\n            } else {\n                // 获取sequence失败\n                // 根据业务需求做下一步操作，建议10秒之后重新调用requestSequence获取sequence\n                }\n            }\n\n    @Override\n    public void onFail(Exception e) {\n        // 异常状态，根据业务需求做下一步操作\n        // 建议10秒之后重新调用requestSequence获取sequence\n    }\n});\n\n```\n\n## JccdexInfo API\n\n```javascript\nJccdexInfo info = JccdexInfo.getInstance();\ninfo.setmBaseUrl(jccUrl);\n```\n\n### requestTicker\n\n```javascript\ninfo.requestTicker(base, counter, callBack);\n// info.requestTicker(\"swt\", \"cnt\", mockCallBack);\n```\n\nParameters\n\n`signature`- `string`\n\n`counter`- `string`\n\n`callback`- `implements JCallback`\n\n### requestAllTickers\n\n```javascript\ninfo.requestAllTickers(callBack);\n```\n\nParameters\n\n`callback`- `implements JCallback`\n\n### requestDepth\n\n```javascript\ninfo.requestDepth(base, counter, type, callBack);\n// info.requestDepth(\"swt\", \"cnt\", \"normal\", mockCallBack);\n```\n\nParameters\n\n`signature`- `string`\n\n`counter`- `string`\n\n`type`- `string {more | normal}`\n\n`callback`- `implements JCallback`\n\n### requestKline\n\n```javascript\ninfo.requestKline(base, counter, type, callBack);\n// info.requestDepth(\"swt\", \"cnt\", \"normal\", mockCallBack);\n```\n\nParameters\n\n`signature`- `string`\n\n`counter`- `string`\n\n`type`- `string {hour | day | week | month}`\n\n`callback`- `implements JCallback`\n\n### requestHistory\n\n```javascript\ninfo.requestHistory(base, counter, type, time, callBack);\n// String unixtime = String.valueOf(System.currentTimeMillis() / 1000);\n// info.requestHistory(\"swt\", \"cnt\", \"newest\", unixtime, mockCallBack);\n```\n\nParameters\n\n`signature`- `string`\n\n`counter`- `string`\n\n`type`- `string {all | more | newest}`\n\n`time`- `string {Unix time}`\n\n`callback`- `implements JCallback`\n\n### requestTickerFromCMC\n\n```javascript\n/**the token value includes eth and btc, the currency value includes cny and rub so far.*/\ninfo.requestTickerFromCMC(token, currency, callBack)\n```\n\nParameters\n\n`token`- `string`\n\n`currency`- `string`\n\n`callback`- `implements JCallback`\n\n## JccConfig API\n\n```javascript\nJccConfig config = JccConfig.getInstance();\nconfig.setmBaseUrl(jccUrl);\n```\n\n### requestConfig\n\n```javascript\nconfig.requestConfig(callBack);\n```\n\n## JccExplore API\n\n```javascript\nJccExplore explore = JccExplore.getInstance();\nexplore.setmBaseUrl(jccUrl);\n```\n\n### requestBalance\n\n通过浏览器接口获取地址余额\n\n```java\n\n// https://uploadletsdex.swtc.top/static/config/jc_hosts.json\n// scanHosts为浏览器节点\n\nJccdexUrl jccUrl = new JccdexUrl(\"expji39bdbdba1e1.swtc.top\", true, 443);\nJccExplore explore = JccExplore.getInstance();\nexplore.setmBaseUrl(jccUrl);\n// 钱包地址\nString address = \"\";\nString uuid = address;\nexplore.requestBalance(uuid, address, callBack);\n\n\n```\n\nParameters\n\n`uuid`- `string`\n\n`address`- `string`\n\n`callback`- `implements JCallback`\n\n### requestTransDetails\n\n```javascript\nexplore.requestTransDetails(uuid, hash, callBack);\n```\n\nParameters\n\n`uuid`- `string`\n\n`hash`- `string`\n\n`callback`- `implements JCallback`\n\n### requestHistoricTransWithAddr\n\n```javascript\nexplore.requestHistoricTransWithAddr(uuid, page, size, begin, end, type, currency, address, callBack);\n```\n\nParameters\n\n`uuid`- `string`\n\n`page`- `int`\n\n`size`- `int`\n\n`begin`- `string {xxxx-xx-xx}`\n\n`end`- `string {xxxx-xx-xx}`\n\n`type`- `string {Send、Receive}`\n\n`currency`- `string`\n\n`address`- `string`\n\n`callback`- `implements JCallback`\n\n### requestPaymentSummary\n\n```javascript\nexplore.requestPaymentSummary(uuid, address, dateTpye, begin, end, type, token, callBack);\n```\n\nParameters\n\n`uuid`- `string`\n\n`address`- `int`\n\n`dateTpye`- `int`\n\n`begin`- `string {xxxx-xx-xx}`\n\n`end`- `string {xxxx-xx-xx}`\n\n`type`- `string {Send、Receive}`\n\n`token`-  `string`\n\n`callback`- `implements JCallback`\n\n### requestHistoricTransWithCur\n\n```javascript\nexplore.requestHistoricTransWithCur(uuid, page, size, begin, end, type, currency, callBack);\n```\n\nParameters\n\n`uuid`- `string`\n\n`page`- `int`\n\n`size`- `int {10/20/50/100}`\n\n`begin`- `string {xxxx-xx-xx}`\n\n`end`- `string {xxxx-xx-xx}`\n\n`type`- `string`\n\n`currency`- `string`\n\n`callback`- `implements JCallback`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjccdex%2Fjcc_rpc_java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjccdex%2Fjcc_rpc_java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjccdex%2Fjcc_rpc_java/lists"}