Skip to content

AveiroPlatform/js-sdk-dist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

目录

Eros-JS-SDK文档

1 JS-SDK 使用说明

官方提供JS-SDK,可运行于浏览器、Electron客户端和手机端。支持 Eros 系统内置交易类型。本开发包多数函数调用需要个人密钥作为参数,但只在本地使用密钥,发送给服务端的数据只包含公钥或者签名等信息,不包含用户敏感信息。

1.1 请求过程说明

1.1 创建一笔新的交易,调用SDK导出的相应函数。
1.2 SDK使用用户传入的参数,根据 Eros 的接口规则,产生一个交易,并进行签名,最终得到完整的交易数据。
1.3 发送请求,把构造完成的数据通过 POST/GET 等方式传发送给 Eros 节点。
1.4 服务端节点接收到请求后,立即进行校验,验证通过后便会处理该次发送过来的请求。
1.5 以 JSON 格式返回响应结果数据。每个响应都包含 code 字段,0 表示成功,其他值表示失败,并包含错误原因。

交易费用

TODO


2 接口

2.1 账户accounts

2.1.1 根据地址获取账户信息

接口地址:/api/account/address/:address
请求方式:GET
备注:返回此地址账户详细信息

请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/account/address/24dYNPt2Ed8ukwuaQi66R4npkeSWdygcUFo8hEHKseZ7DZtzV8'

2.1.2 由主账户密码得到密钥对

const keyPair = erosLib.fromSecret('your secret')
console.log(keyPair)

2.1.3 由地址计算公钥

erosLib.getPublicKeyByAddress

2.1.4 由公钥计算地址

erosLib.getAddressByPublicKey

2.1.5 获取相关地址的所有交易

接口地址:/api/account/trss/:address
请求方式:GET
参数说明:

名称 类型 必填 说明
page string Y 分页的页数,从零开始

请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/account/trss/24dYNPt2Ed8ukwuaQi66R4npkeSWdygcUFo8hEHKseZ7DZtzV8?page=0'

2.2 交易transactions

2.2.1 转账

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数:send
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
recipient string Y 接收者地址
amount number Y 数量
message string N 备注信息
secondSecret string N 发送者二级密码

SDK 请求示例:

const send = erosLib.send(secret, recipient, amount, message,secondSecret)

2.2.2 设置二级密码

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数:signature
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
secondSecret string Y 二级密码
secondSecretOld string N 当前二级密码

备注:如果当前无二级密码,第三个参数省略。

SDK 请求示例:

const signature = erosLib.signature(secret, secondSecret, secondSecretOld)

2.2.3 注册代理

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数:delegate
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
username string Y 名称
secondSecret string N 二级密码

SDK 请求示例:

const delegate = erosLib.delegate(secret, username,secondSecret)

2.2.4 投票

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数:vote
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
votes array Y 投票列表

备注:投票列表为公钥字符串数组,+/- 代表投票/取消投票

SDK 请求示例:

const vote = erosLib.vote(secret, [
  '+bc7e64263844ab3d4f91edbe76d6c2a066efa29159b941cbcd411e0cbb825cf9'
])

2.2.7 存储信息

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数:storage
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
content string Y 内容

备注:存储的是 content 的 hash

SDK 请求示例:

  const storage = erosLib.storage(secret, content)

2.2.8 锁仓

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数:lock
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
height integer Y 高度
secondSecret string N 二级密码

SDK 请求示例:

  const lock = erosLib.lock(secret, height, secondSecret)

2.2.9 跨链兑换

待开放

2.2.10 根据id获取交易信息

接口地址:/api/transaction/:id
请求方式:GET
备注:返回此交易原始信息

请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/transaction/1722550667642e772fb834c6e8d3b9eb3aa04c7f27fd05df74a62758290f8e4a'

2.2.11 开关代理

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数: turnDelegate
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
open boolean Y 打开 true,关闭 false
secondSecret string N 二级密码

备注:只有注册为代理之后的账户才可关闭

SDK 请求示例:

  const turnDelegate = erosLib.turnDelegate(secret, false, secondSecret)

2.2.12 获取全部交易

接口地址:/api/transaction/trss/:page
请求方式:GET
请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/transaction/trss/0'

2.2.13 提交合约

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数: contract
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
option object Y option 对象
option.code string Y 合约代码
option.message string N 备注,最多255个字符
secondSecret string N 二级密码

SDK 请求示例:

  const code = `function main(args) {
  var strget = storageGet()
  var getObj = []
  if (strget) {
    getObj = JSON.parse(strget)
  }
  if (getObj.indexOf(requesterKey) >= 0) {
    return JSON.stringify({
      amount: 0
    })
  } else {
    getObj.push(requesterKey)
    storageSet(JSON.stringify(getObj))
    return JSON.stringify({
      amount: 5
    })
  }
}`
  const contract = erosLib.contract(secret, { code }, secondSecret)

2.2.14 调用合约

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数: invoke
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
option object Y option 对象
option.contractId string Y 合约id
option.args array N 字符串数组,不大于8项
option.message string N 备注,最多255个字符

SDK 请求示例:

  const invoke = erosLib.invoke(secret, { contractId })

2.2.15 注册资产

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数: regAsset
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
option object Y option 对象
option.amount long Y 资产总额
option.message string N 备注,最多255个字符
secondSecret string N 二级密码

SDK 请求示例:

  const regAsset = erosLib.regAsset(secret, { amount }, secondSecret)

2.2.16 资产转账

接口地址:/api/transaction/transaction
请求方式:POST
支持格式:'application/json'
SDK 导出函数: assetTransfer
参数说明:

名称 类型 必填 说明
secret string Y 发送者密码
receiver string Y 接收者地址
option object Y option 对象
option.assetId string Y 资产id
option.amount long Y 数量
option.message string N 备注,最多255个字符
secondSecret string N 二级密码

SDK 请求示例:

  const assetTransfer = erosLib.assetTransfer(secret, { assetId, amount }, secondSecret)

2.3 区块blocks

2.3.1 根据高度获取区块详细信息

接口地址:/api/block/height/:height
请求方式:GET
参数:

名称 类型 必填 说明
org string N 只能为 1

备注:返回此区块原始信息

请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/block/height/230?org=1'

2.3.2 获取最高区块

接口地址:/api/block/top
请求方式:GET
参数:

备注:返回已入库之最高区块

请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/block/top'

2.3.3 获取全部区块

接口地址:/api/block/blocks/:page
请求方式:GET
参数:

名称 类型 必填 说明
page string Y 页数,从零开始

请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/block/blocks/0'

2.4 代理delegate

2.4.1 获取代理列表

接口地址:/api/delegate/list/:page
请求方式:GET
参数:

名称 类型 必填 说明
page integer Y 第几页,从零开始
address string N 自己的地址

备注:address 用?address=xxx 来传,可以没有,如果有则额外返回是否给相应的代理投了票

请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/delegate/list/1'

2.5 投票vote

2.5.1 查询历史投票

接口地址:/api/vote/voted/:address
请求方式:GET
参数:

名称 类型 必填 说明
page string Y 页信息,从零开始

请求示例:

curl -k -X GET 'http://123.56.187.196:10086/api/vote/voted/2S1pW43jTeZAvhXZRWcVjbpZhqS1ZMEczaRq7u4mGJfPwEoxW3?page=0'

2.6 其他导出函数

2.6.1 导出Buffer对象

erosLib.Buffer

2.6.2 导出jshash对象

示例:

erosLib.jshash.sha256().update('abc').digest('hex')

2.6.3 将交易或者区块的timestamp转换为世界时

示例:

new Date(erosLib.realTime(trs.timestamp)).toLocaleString()

2.6.4 交易类型的文字描述

示例:

console.log(erosLib.typeLiteral(trs.type))

2.6.5 判断地址是否合法

示例:

if (erosLib.isAddress(address)) {
  // ...
}

2.6.6 判断字符串是否为交易id

示例:

if (erosLib.isTrsId('02be8404f181404847b63f7f19fcb52734f95f7ad22095848d76adb2faf2f67c')) {
  // ...
}

2.6.7 判断是否为有效高度

示例:

if (erosLib.isValidHeight('20')) {
  // ...
}

2.7 智能合约

技术白皮书-合约

2.8 其他常用

2.8.1 获取节点列表

接口地址:/peer/list
请求方式:GET

3 示例

<!DOCTYPE html>
<html><head>
<meta charset="utf-8"/>
<title>TEST</title>
<script type="text/javascript" charset="utf-8" src="http://apps.bdimg.com/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="http://admin.waketu.com/cryp.js"></script>
<script type="text/javascript" charset="utf-8" src="index.bundle.js"></script>
</head>
<body>
	<script type="text/javascript" charset="utf-8">
	  $(function(){
	  const secret = 'your secret'
	  const recipient = '24dYNPt2Ed8ukwuaQi66R4npkeSWdygcUFo8hEHKseZ7DZtzV8'
	  const send = erosLib.send(secret, recipient, 2.9)
	  $.ajax({
	    url: 'http://123.56.187.196:10086/api/transaction/transaction',
	    type: 'POST',
	    contentType: 'application/json',
	    data: JSON.stringify({ transaction: send }),
	    success: function(res){
	      console.log(res)
	    },
	    error: function(err){
	    }
	  })

	})
	</script>
</body>
</html>

About

Web, Android, IOS 的 SDK 和接口文档

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages