我们使用官方RPC接口轻松访问EOS区块链。首先,打开开发者中心网站。
wallet RPC API在V1.1中是支持的,而在v1.2中,nodeos已经删除了wallet API,所以应该直接在keosd中使用,其API定义和以前一样。1.1版可以查看wallet API,在nodeos中不能添加wallet插件启动keosd。我们需要通过命令keosd单独启动keosd应用程序。请注意,它的端口不能与nodeos相同。另外,在最新的1.3版本中,wallet RPC API被单独放置尚力财经小编2022在网站的keosd导航模块中。
我们使用wallet的第一个API创建wallet,文档如下
使用curl工具发起post请求访问EOS的命令如下
curl-request post -URL 3358127 . 0 . 0 . 1:8889/v1/wallet/create -data ' ' my wallet ' '运行这个命令的前提:
安装curl工具,这个太简单了,这里就不解释了。确保命令中的端口与keosd配置文件中的端口一致,这里是8889(如果没有配置,请到EOS开发环境配置章节进行配置)。启动keosd服务。如果错误是无法连接到keosd,请运行命令pkill keosd停止kesod,如果ke OSD正在运行,请终止该进程并重试。操作成功后的效果如下图所示。新钱包的密码会被返回,15分钟不使用钱包会自动锁定。注意最后一行的密码一定要保存,需要用它来解锁这个钱包。
尚力财经小编2022二。项目源代码这部分源代码包含了钱包模块的以下功能:创建钱包、打开钱包列表、解锁/锁定导入私钥/获取公私钥对
1 .web.js在控制器文件夹下创建一个新网站.module . exports={ getwallet html:async(CTX)={ awaitctx . render(' wallet . html ')},}
2.wallet.js 在controllers文件夹下新建一个wallet.js文件,后端实现wallet模块的所有功能。让httpRequest=require('https://www.baoguzi.com/utils/http request ')let config=require('https://www.baoguzi.com/config/config ')模块。exports={ wallet create:async(CTX)={ console。log(JSON。斯特林菲(CTX。请求。body))let { wallet }=CTX。请求。body let RES=await http请求。发布请求(配置。wallet create,wallet)if(RES . code==0){ RES . data={ ' password ':RES . data,' wallet':wallet} } ctx.body=res },wallet open:async(CTX)={ console。log(JSON。stringify(JSON password])CTX . body=RES },wallet lock:async(CTX)={ console。log(JSON。斯特林菲(CTX。请求。body))let { wallet }=CTX。请求。body let RES=await http请求。发布请求(配尚力财经小编2022置。wallet lock,wallet) ctx.body=res },wallet import私钥:async(CTX)={控制台。log(JSON。斯特林菲(CTX。请求。body))let {钱包,私钥}=CTX。请求。body let RES type]) ctx.body=res },walletPubkeyGetPrivatekey:async(CTX)={ let {钱包,密码,公钥}=CTX。请求。body let RES=await http请求。发布请求(配置。wallet getkeys,[wallet,password]) let privatekey='无权查看for(const index in RES . data){ let keys=RES . data[index]if(keys[0]==公钥){ private key=keys[1]break } } RES . data=私钥CTX。body=RES } }
3。router.js将钱包模块所有功能的接口绑定到路由。let router=require(' KOA-router ')()let web controller=require('https://www.baoguzi.com/controllers/web ')let wallet controller=require('https://www.baoguzi.com/控制器/钱包')//钱包router.post('/wallet/create),钱包控制器。钱包创建)路由器。post('/wallet/open),钱包控制器。钱包打开)路由器。get('/wallet/list),钱包控制器。钱包列表)路由器。post('/wallet/unlock),钱包控制器。钱包解锁)路由器。post('/wallet/lock),钱包控制器。钱包锁)路由器。post('/wallet/import键),钱包控制器。钱包导入私钥)路由器。发布(')页面router.get('/wallet.html ',web控制器。getwallet html)模块。出口=路由器4 .wallet.html
钱包列表5 .wallet.js编辑静态/js文件夹下的wallet.js文件,前端处理钱包模块的网络请求与页面的渲染。lert(JSON.stringify(res.data)) if (res.code == 0) { lockWalletComplete(name) } })}function getAccountList(name) { localStorage.setItem("currentwallet", name) window.location.href = "/account.html"}function unlockWalletComplete(name) { console.log(name,name.length) $(`#unlock${name}`).text("已解锁") $(`#lock${name}`).text("未锁定") $(`#unlock${name}`).attr({"disabled":"disabled"}) $(`#lock${name}`).attr({"disabled":false}) $(`#importkey${name}`).attr({"disabled":false}) $(`#getkeys${name}`).attr({"disabled":false}) $(`#getaccounts${name}`).attr({"disabled":false})}function lockWalletComplete(name) { $(`#unlock${name}`).text("未解锁") $(`#lock${name}`).text("已锁定") $(`#unlock${name}`).attr({"disabled":false}) $(`#lock${name}`).attr({"disabled":"disabled"}) $(`#importkey${name}`).attr({"disabled":"disabled"}) $(`#getkeys${name}`).attr({"disabled":"disabled"}) $(`#getaccounts${name}`).attr({"disabled":"disabled"})}$(document).ready(function () { //获取钱包列表 $.get("/wallet/list", function (res, status) { console.log(status, JSON.stringify(res)) if (res.code == 0) { let walletTable = $("#wallet-list-table") res.data.forEach(wallet => { let walletName = wallet let isUnlock = false if(wallet.charAt(wallet.length-1)=="*"){ isUnlock = true walletName = wallet.slice(0,-2) } let walletTr = ` ${walletName} 未解锁 已锁定 导入私钥 获取公私钥对 账号列表 ` walletTable.append(walletTr) if(isUnlock){ unlockWalletComplete(walletName) } }); } }) //创建钱包 $("#wallet-create-form").validate({ rules: { wallet: { required: true, }, }, messages: { wallet: { required: "请输入新建的钱包名称", }, }, submitHandler: function (form) { $(form).ajaxSubmit({ url: "/wallet/create", type: "post", dataType: "json", success: function (res, status) { console.log(status + JSON.stringify(res)) alert(JSON.stringify(res.data)) if (res.code == 0) { window.location.reload() localStorage.setItem(res.data.wallet, res.data.password) } }, error: function (res, status) { console.log(status + JSON.stringify(res)) } }); } }) //打开钱包 $("#wallet-open-form").validate({ rules: { wallet: { required: true, }, }, messages: { wallet: { required: "请输入要打开的钱包名称", }, }, submitHandler: function (form) { $(form).ajaxSubmit({ url: "/wallet/open", type: "post", dataType: "json", success: function (res, status) { console.log(status + JSON.stringify(res)) if (res.code == 0) { window.location.reload() } else { alert(JSON.stringify(res.data)) } }, error: function (res, status) { console.log(status + JSON.stringify(res)) } }); } })})
在EOSV1.2之后的版本,钱包数据所在路径是~/eosio-wallet,创建的钱包都能在该文件中查看。
当你第一次使用该钱包应用程序时,前端显示的钱包列表将是空的,需要自己创建钱包。另外,重启keosd服务后,还需重新打开之前创建的钱包才能显示。创建钱包与打开钱包的效果演示如下:项目源码Github地址
版权声明:博客中的文章版权归博主所有,未经授权禁止转载,转载请联系作者(微信:lixu1770105)取得同意并注明出处。未经授权禁止转载、改编,转载请注明出处!