Skip to content

API Document

Albert·Gou edited this page Nov 27, 2019 · 102 revisions

指令介绍 API

PalletOne RPC接口分为Public和Private两种,Public可以通过互联网远程访问,而Private只能在localhost访问。 以下接口中,标记了[*]的为Private API。

1.PTN rpc接口

ptn.decodeTx

  • API 说明 将一个hex的Tx对象解码为Json格式的Tx对象
  • 函数定义 DecodeTx(ctx context.Context, hex string) (string, error)
  • 参数说明 rlp编码后的Tx对象hex格式
  • 返回值说明 Json格式的Tx对象

ptn.listSysConfig

  • API 说明

    获取当前区块链的所有配置参数,区块链浏览器专用。

  • 函数定义

    ListSysConfig() ([]*ptnjson.ConfigJson, error)
  • 参数说明

  • 返回值说明

    // 配置参数的键值对,区块链浏览器专用
    type ConfigJson struct {
      Key   string `json:"key"`   // 配置参数的key
      Value string `json:"value"` // 配置参数的value
    }

ptn.getPledge

  • API 说明

    获取指定账户的质押情况

  • 函数定义

    GetPledge(addStr string) (*modules.PledgeStatusJson, error)
  • 参数说明

    addStr string // 账户地址

  • 返回值说明

    type PledgeStatusJson struct {
      NewDepositAmount    decimal.Decimal `json:"newDepositAmount"`
      PledgeAmount        decimal.Decimal `json:"pledgeAmount"`
      WithdrawApplyAmount string          `json:"withdrawApplyAmount"`
      OtherAmount         decimal.Decimal `json:"otherAmount"`
    }

ptn.getAddressWithPublicKey

  • API 说明

    获取指定公钥对应的地址

  • 函数定义

    GetAddressWithPublicKey(pubkey string) (addStr string, err error)
  • 参数说明

    pubkey string // 公钥字符串,不以0x开头的长度为66的十六进制字符串;

  • 返回值说明

    对应的地址,或者错误信息;


ptn.getProofTxInfoByHash

  • API 说明:在全节点上通过交易hash获取交易路径、默克尔根等验证数据
  • 函数定义:func (s *PublicBlockChainAPI) GetProofTxInfoByHash(ctx context.Context, txhash string) ([][]byte, error)
  • 参数说明:交易hash
  • 返回值说明
返回值是一个包含三个元素的byte数组。
0:header_hash
1:trie_key
2:trie_path

["uGu/P537+Ty5WBmhxZaDOChLvRQnzrB0Dot+AlSNH5E=", "AQ==", "+QGQ+FGg7QqkrWoINVgaKf18iKt+S1eBy6inpCI3HjK1cyz+076AgICAgICAoFQvvH6IkIJgH2w/dQII+aQ8gChBpuD6le9q5PJ2ZoC7gICAgICAgID5AToxuQE2+QEz+QEu+QErgLkBJ/kBJPiS+JC4akcwRAIgBAGyNmZomi5pTK99mBNGmtRU6Qp2OUxaW892is6yzp8CIFABKqQsoGazicgHzxBt0/q1N8PomfyKMiXOfT1IuwQYASECX0zoOs68SnhAX0YVleP+IgSIqxYZa9SXoxZuTVIpXh+AoB30vWBWRxc6qZT9xsuK/eWxWo7aT6nT9GkiadaCIiYSgID4jfhDhRdIdugAmXapFIcK1xEDi9l1NL017JqJkOd8s4HIiKzikEAAgrsIAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAPhGiAFjRWEPHTcAmXapFKGUHO4MkMpSlF8NvADKcsDo7SbjiKzikEAAgrsIAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAICAgA=="]

ptn.getChainParameters

  • API 说明

    获取当前区块链的所有配置参数以及对应的值

  • 函数定义

    GetChainParameters() (*core.ChainParameters, error)
  • 参数说明

  • 返回值说明

配置参数的字段名以及对应的值


ptn.getTokenTxHistory

  • API 说明 获得某种Token的交易流转历史
  • 函数定义
func (s *PublicBlockChainAPI) GetTokenTxHistory(ctx context.Context, assetStr string) ([]*ptnjson.TxHistoryJson, error) 
  • 参数说明 要查询的Token的ID字符串
  • 返回值说明 该Token的交易历史记录的数组

ptn.proofTransactionByHash

  • API 说明:在全节点上通过交易hash进行SPV验证
  • 函数定义:
func (s *PublicBlockChainAPI) ProofTransactionByHash(ctx context.Context, txhash string) (string, error) 
  • 参数说明:交易hash
  • 返回值说明
成功:ok
失败:error
超时:timeout

ptn.encodeTx

  • API 说明 将一个Json格式的Tx对象编码为Rlp格式的Hex对象
  • 函数定义 EncodeTx(ctx context.Context, jsonStr string) (string, error)
  • 参数说明 Json格式的Tx字符串
  • 返回值说明 Rlp编码格式的Tx对象的Hex字符串

ptn.proofTransactionByRlptx

  • API 说明:在轻节点上通过交易验证数据进行SPV验证
  • 函数定义:func (b *PublicBlockChainAPI) ProofTransactionByRlptx(rlptx [][]byte) (string, error)
  • 参数说明:此参数通过在全节点上ptn.getProofTxInfoByHash命令获取
参数是一个包含三个元素的byte数组。
0:header_hash
1:trie_key
2:trie_path

["uGu/P537+Ty5WBmhxZaDOChLvRQnzrB0Dot+AlSNH5E=", "AQ==", "+QGQ+FGg7QqkrWoINVgaKf18iKt+S1eBy6inpCI3HjK1cyz+076AgICAgICAoFQvvH6IkIJgH2w/dQII+aQ8gChBpuD6le9q5PJ2ZoC7gICAgICAgID5AToxuQE2+QEz+QEu+QErgLkBJ/kBJPiS+JC4akcwRAIgBAGyNmZomi5pTK99mBNGmtRU6Qp2OUxaW892is6yzp8CIFABKqQsoGazicgHzxBt0/q1N8PomfyKMiXOfT1IuwQYASECX0zoOs68SnhAX0YVleP+IgSIqxYZa9SXoxZuTVIpXh+AoB30vWBWRxc6qZT9xsuK/eWxWo7aT6nT9GkiadaCIiYSgID4jfhDhRdIdugAmXapFIcK1xEDi9l1NL017JqJkOd8s4HIiKzikEAAgrsIAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAPhGiAFjRWEPHTcAmXapFKGUHO4MkMpSlF8NvADKcsDo7SbjiKzikEAAgrsIAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAICAgA=="]
  • 返回值说明
成功:ok
失败:error
超时:timeout

ptn.syncUTXOByAddr

  • API 说明:在轻节点上更新账户的UTXO
  • 函数定义:func (b *PublicBlockChainAPI) SyncUTXOByAddr(addr string) string
  • 参数说明:账户地址
  • 返回值说明
成功:ok
失败:error
超时:timeout

2.Personal rpc接口

personal.listAccounts[*]

  • API 说明 列出当前所有账户
  • 函数定义 func (s *PrivateAccountAPI) ListAccounts() []string
  • 参数说明 无显式参数
  • 返回值说明 列出当前节点所有账户

personal.newAccount[*]

  • API 说明 创建新账户
  • 函数定义 func (s *PrivateAccountAPI) NewAccount(password string) (string, error)
  • 参数说明 新账户解锁密码
  • 返回值说明 创建结果的PTN地址

personal.transferPtn[*]

  • API 说明

    从一个地址往另一个地址转移PTN

  • 函数定义

    func (s *PrivateAccountAPI) TransferPtn(from, to string, amount decimal.Decimal, text *string,password string) (*TxExecuteResult, error)
  • 参数说明

    from:发送地址 to:接收地址 amount:数量 text:附加信息 password:解锁密码

  • 返回值说明

    type TxExecuteResult struct {
      TxContent string      `json:"txContent"` // 交易内容
      TxHash    common.Hash `json:"txHash"`    // 交易hash
      TxSize    string      `json:"txSize"`    // 交易大小
      TxFee     string      `json:"txFee"`     // 交易费用
      Tip       string      `json:"tip"`       // 提示
      Warning   string      `json:"warning"`   // 警告
    }

personal.importRawKey[*]

  • API 说明 加载私钥,并创建账户
  • 函数定义 func (s *PrivateAccountAPI) ImportRawKey(privkey string, password string) (string, error)
  • 参数说明 privkey:hex字符串格式私钥
  • 返回值说明 加载账户后的地址

personal.listWallets[*]

  • API 说明 列出当前所有钱包状态
  • 函数定义 func (s *PrivateAccountAPI) ListWallets() []rawWallet
  • 参数说明 无显式参数
  • 返回值说明 钱包状态结构体
type rawWallet struct {
  URL      string             `json:"url"`
  Status   string             `json:"status"`
  Failure  string             `json:"failure,omitempty"`
  Accounts []accounts.Account `json:"accounts,omitempty"`
}

personal.lockAccount[*]

  • API 说明 锁定账户
  • 函数定义 func (s *PrivateAccountAPI) LockAccount(addrStr string) bool
  • 参数说明 PTN地址
  • 返回值说明 锁定结果,成功或者失败

personal.openWallet[*]

  • API 说明 打开钱包
  • 函数定义 func (s *PrivateAccountAPI) OpenWallet(url string, passphrase *string) error
  • 参数说明 钱包url,例如:url: "keystore:///home/pallet/go/go-palletone/build/bin/palletone/keystore/UTC--2019-07-17T07-24-39.431596141Z--P17t9CnH73LFzRLnRfL76embkWpCeS7L518"
  • 返回值说明 打开钱包结果

personal.unlockAccount[*]

  • API 说明 解锁账户
  • 函数定义 func (s *PrivateAccountAPI) UnlockAccount(addrStr string, password string, duration *uint64) (bool, error)
  • 参数说明 addrStr:PTN地址 password:解锁密码 duration:解锁时长,值为0时,永久解锁
  • 返回值说明 解锁结果,成功或失败

3.Admin rpc接口

admin.addCorsPeer[*]

  • API 说明:添加跨域节点
  • 函数定义:func (api *PrivateAdminAPI) AddCorsPeer(url string) (bool, error)
  • 参数说明:
"pnode://4373de4b08985dada03b3cfce14aa895494b9104d2b3d62c17b8d704faaaf0bbaccfa00659966c1481754354029d676983ccbf0e70f130f497e27eef73419e37@127.0.0.1:30306"
  • 返回值说明
成功:true
失败:false

admin.peers

  • API 说明:查看当前节点的所有对端节点
  • 函数定义:func (api *PublicAdminAPI) Peers() ([]*p2p.PeerInfo, error)
  • 参数说明
  • 返回值说明:返回所有当前节点的对端节点

admin.stopRPC[*]

  • API 说明:停止本节点的RPC服务
  • 函数定义:func (api *PrivateAdminAPI) StopRPC() (bool, error)
  • 参数说明:无参数
  • 返回值说明
成功:true
失败:false

admin.addPeer[*]

  • API 说明:添加静态节点
  • 函数定义:func (api *PrivateAdminAPI) AddPeer(url string) (bool, error)
  • 参数说明
"pnode://4373de4b08985dada03b3cfce14aa895494b9104d2b3d62c17b8d704faaaf0bbaccfa00659966c1481754354029d676983ccbf0e70f130f497e27eef73419e37@127.0.0.1:30306"
  • 返回值说明
成功:true
失败:false

admin.corsInfo

  • API 说明:查看本节点的跨域协议
  • 函数定义:func (api *PublicAdminAPI) CorsInfo() (*p2p.NodeInfo, error)
  • 参数说明:无参数
  • 返回值说明
{
  id: "5233abc4336f578fd36673d4b2d9961f3170c407185349ce029f58bfd1d44b32e9a180f65846fd0e5e5a618f92f4bfe15479428e2a4227cd909d43e5204f53c1",
  ip: "0.0.0.0",
  listenAddr: "",
  name: "Gptn/v1.0.1-beta-d2758ff4/linux-amd64/go1.10.1",
  pnode: "pnode://5233abc4336f578fd36673d4b2d9961f3170c407185349ce029f58bfd1d44b32e9a180f65846fd0e5e5a618f92f4bfe15479428e2a4227cd909d43e5204f53c1@0.0.0.0:0",
  ports: {
    discovery: 0,
    listener: 0
  },
  protocols: {
    cors: {
      genesis: "0x4736b6e37813d376d9ba2ba1bdcfb716c20a107fa119ebe72aae0d9009156e31",
      head: "0x7763c1b8d97c57c1a38cc488cd86ccaf4cd4717f1d06555f9dd45a4a6bb38c0f",
      network: 1,
      number: 181
    }
  }
}

admin.addTrustedPeer[*]

  • API 说明

    添加可信节点

  • 函数定义

    AddTrustedPeer(url string) (bool, error)
  • 参数说明

    "pnode://4373de4b08985dada03b3cfce14aa895494b9104d2b3d62c17b8d704faaaf0bbaccfa00659966c1481754354029d676983ccbf0e70f130f497e27eef73419e37@127.0.0.1:30306"
  • 返回值说明

    成功:true
    失败:false

admin.corsPeers

  • API 说明:查看跨域协议下的对端节点
  • 函数定义:func (api *PublicAdminAPI) CorsPeers(protocol string) ([]*p2p.PeerInfo, error)
  • 参数说明
  • 返回值说明:返回所有当前节点跨域协议下的对端节点

admin.removePeer[*]

  • API 说明:删除对端节点
  • 函数定义:func (api *PrivateAdminAPI) RemovePeer(url string) (bool, error)
  • 参数说明:无参数
"pnode://4373de4b08985dada03b3cfce14aa895494b9104d2b3d62c17b8d704faaaf0bbaccfa00659966c1481754354029d676983ccbf0e70f130f497e27eef73419e37@127.0.0.1:30306"
  • 返回值说明
成功:true
失败:false

admin.startRPC[*]

  • API 说明:启动RPC服务
  • 函数定义:func (api *PrivateAdminAPI) StartRPC(host *string, port *int, cors *string, apis *string, vhosts *string) (bool, error)
  • 参数说明:admin.startRPC("127.0.0.1", 8545)
  • 返回值说明
成功:true
失败:false

admin.datadir

  • API 说明:查看数据存放地址
  • 函数定义:func (api *PublicAdminAPI) Datadir() string
  • 参数说明:无参数
  • 返回值说明
"/home/ying/deployment/node1/palletone"

admin.nodeInfo

  • API 说明:查看当前节点信息
  • 函数定义:func (api *PublicAdminAPI) NodeInfo() (*p2p.NodeInfo, error)
  • 参数说明:无参数
  • 返回值说明
{
  id: "d6250d040c3569e2f15f1dcd07f3dc0c56bc92736ecab2a57fe16a3d800fd8bbc2e52de8dacba59a0248c5982a4ebc2ed35bd63ad506d80705be681a51ee8d7d",
  ip: "::",
  listenAddr: "[::]:30303",
  name: "Gptn/v1.0.0-beta-47d76baa/linux-amd64/go1.10.1",
  pnode: "pnode://d6250d040c3569e2f15f1dcd07f3dc0c56bc92736ecab2a57fe16a3d800fd8bbc2e52de8dacba59a0248c5982a4ebc2ed35bd63ad506d80705be681a51ee8d7d@[::]:30303",
  ports: {
    discovery: 30303,
    listener: 30303
  },
  protocols: {
    PTN: {
      Index: 61340,
      genesis: "0x6365f3bc9c197b8679821b998da5ee8f88b3db67fdb023250db3d1c2ae0ab1c6",
      head: "0x25996eabf85f42f80aa71b892d67ce8abf264ab88f9702b4e4a93454b78896c9",
      network: 1
    },
    lps: {
      Index: 61340,
      genesis: "0x6365f3bc9c197b8679821b998da5ee8f88b3db67fdb023250db3d1c2ae0ab1c6",
      head: "0x25996eabf85f42f80aa71b892d67ce8abf264ab88f9702b4e4a93454b78896c9",
      network: 1
    }
  }
}

admin.removeTrustedPeer[*]

  • API 说明

    删除可信节点

  • 函数定义

    RemoveTrustedPeer(url string) (bool, error)
  • 参数说明

    "pnode://4373de4b08985dada03b3cfce14aa895494b9104d2b3d62c17b8d704faaaf0bbaccfa00659966c1481754354029d676983ccbf0e70f130f497e27eef73419e37@127.0.0.1:30306"
  • 返回值说明

    成功:true
    失败:false

4.DAG rpc接口

dag.getCommon

  • API 说明:通过key获取数据的接口
  • 函数定义:func GetCommon(ctx context.Context, key string) ([]byte, error)
  • 请求参数:
    • key: 请求数据的键,二进制编码的字符串形式
  • 返回值说明:
    • result: value值的二进制编码

dag.getCommonByPrefix

  • API 说明:通过前缀查询dag数据库的接口
  • 函数定义:func GetCommonByPrefix(ctx context.Context, prefix string) (string, error)
  • 请求参数:
    • key: 数据键的前缀,二进制编码的字符串形式
  • 返回值说明:
    • result: 匹配该前缀的key和value,二进制编码

dag.getUnitByHash

  • API 说明:获取某个hash的Unit信息
  • 函数定义:func GetUnitByHash(ctx context.Context, condition string) string
  • 参数说明:
    • condition: unit的hash值,hex字符串
  • 返回值说明
    • result: 返回数据的详细信息,json序列化后的字符串格式
    • item:请求项为unit
    • info: unit的详细信息

dag.getAddrOutpoints

  • API 说明:获取某个地址的所有outpoints信息
  • 函数定义:func GetAddrOutpoints(ctx context.Context, addr string) (string, error)
  • 参数说明:
    • addr: 请求地址
  • 返回值:
    • result:所有outpoints的详细信息
    • error: 错误信息

dag.getUnitByNumber

  • API 说明:获取某个高度的unit信息
  • 函数定义:func GetUnitByNumber(ctx context.Context, condition string) string
  • 参数说明:
    • condition:单元高度(字符串格式)
  • 返回值说明:
    • result:单元的详细信息(Json序列化后的)

dag.stableUnitNum

  • API 说明:获取当前最高稳定单元的编号
  • 函数定义:StableUnitNum() uint64
  • 参数说明:
  • 返回值说明:
    • result: 最高稳定单元的编号

dag.isSynced

  • API 说明:判断当前节点数据是否同步完成
  • 函数定义:IsSynced() bool
  • 参数说明:
  • 返回值说明:
    • result: 是否同步完成

dag.getFastUnitIndex

  • API 说明:获取dag里某条链的最新高度信息
  • 函数定义:func GetFastUnitIndex(ctx context.Context, assetid string) string
  • 参数说明:
    • assetid: 资产编码 例如:ptn
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • fast_hash: 最新单元hash
    • fast_index: 最新单元高度
    • stable_hash: 稳定单元hash
    • stable_index: 稳定单元高度

dag.getHeaderByHash

  • API 说明:获取某个hash的header信息
  • 函数定义:func GetHeaderByHash(ctx context.Context, condition string) (string, error)
  • 参数说明:
    • 请求header的高度,字符串格式
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为header
    • info: header的详细信息

dag.getHeaderByNumber

  • API 说明: 获取某个高度的header信息
  • 函数定义: func GetHeaderByNumber(ctx context.Context, condition string) (string, error)
  • 参数说明:
    • 请求header的高度
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为header
    • info: header的详细信息

dag.getUnitSummaryByNumber

  • API 说明:获取某个高度的unit信息
  • 函数定义:func GetUnitSummaryByNumber(ctx context.Context, condition string) string
  • 参数说明:
    • condition:请求单元的高度
  • 返回值说明:
    • result:单元的详细信息,json序列化后的字符串格式

dag.headUnitNum

  • API 说明:获取最新单元的高度
  • 函数定义:HeadUnitNum() uint64
  • 参数说明:
  • 返回值说明:最新单元的高度

dag.headUnitHash

  • API 说明:获取最新单元的hash
  • 函数定义: HeadUnitHash() string
  • 参数说明:
  • 返回值说明:最新单元的hash

dag.headUnitTime

  • API 说明:获取最新单元的时间戳
  • 函数定义: HeadUnitTime() string
  • 参数说明:
  • 返回值说明:最新单元的时间戳

dag.getAddrUtxos

  • API 说明:获取某个地址的所有utxo
  • 函数定义:func GetAddrUtxos(addr string) ([]*ptnjson.UtxoJson, error)
  • 参数说明:
    • address:请求地址
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为address_utxos
    • info: 所有utxo的详细信息

dag.getTxByHash

  • API 说明:获取某个交易的具体信息
  • 函数定义:func GetTxByHash(ctx context.Context, hashHex string) (string, error)
  • 参数说明:
    • hashHex: 交易hash的hex编码
  • 返回值说明
    • result: 返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为transaction_info
    • info: 交易的详细信息
    • error:错误信息

dag.getTxHashByReqId

  • API 说明:根据reqid获取某个交易的hash
  • 函数定义:func GetTxHashByReqId(ctx context.Context, hashHex string) (string, error)
  • 参数说明:
    • hashHex: requestId
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为tx_hash
    • info:交易hash的hex编码

dag.getTxByReqId

  • API 说明:根据reqid获取某个交易的详细信息
  • 函数定义:func GetTxByReqId(ctx context.Context, hashHex string) (string, error)
  • 参数说明:
    • hashHex: requestId
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为transaction_info
    • info:交易的详细信息

dag.getUnitsByIndex

  • API 说明:根据高度区间和token类型获取所有unit信息
  • 函数定义:func GetUnitsByIndex(ctx context.Context, start, end decimal.Decimal, asset string) string
  • 参数说明:
    • start: 单元的起始高度
    • end:单元的结束高度
    • asset: 资产类型,例如: ptn
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为units
    • info:所有单元的列表,单元详细信息为json序列化后的格式

dag.getHexCommon

  • API 说明: 获取某个hex的value
  • 函数定义: func GetHexCommon(ctx context.Context, key string) (string, error)
  • 参数说明:
    • key: hex格式的键
  • 返回值说明:
    • result:键对应的value值,hex格式

dag.getTxPoolTxByHash

  • API 说明: 根据hash获取某个txpool tx信息
  • 函数定义:func GetTxPoolTxByHash(ctx context.Context, hex string) (string, error)
  • 参数说明:
    • hex: 交易的hash值
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为txpool_tx
    • info:txpool交易的详细信息,json序列化后的格式

dag.getUnstableUnits

  • API 说明:获取当前dag里未稳定的单元
  • 函数定义:func GetUnstableUnits() []*ptnjson.UnitSummaryJson
  • 参数说明:
  • 返回值说明:
    • result: 所有未稳定单元的列表,json序列化后的格式

dag.getTxSearchEntry

  • API 说明 获取某个交易在被打包单元里的索引及单元信息
  • 函数定义 func GetTxSearchEntry(hash common.Hash) (*ptnjson.TxSerachEntryJson, error)
  • 参数说明:
    • hash:交易hash
  • 返回值说明:
    • result:返回数据的详细信息,json序列化后的字符串格式
    • item: 请求项为tx_entry
    • info:TxSerachEntryJson的详细信息,json序列化后的格式
    • error:错误信息


5.Mediator rpc接口

mediator.apply[*]

  • API 说明

    普通节点提交相关信息,申请成为mediator节点。

  • 函数定义

    Apply(args modules.MediatorCreateArgs, fee decimal.Decimal) (*TxExecuteResult, error)
  • 参数说明

    type MediatorCreateArgs struct {
      *core.MediatorInfoBase
      *core.MediatorApplyInfo
      JurorDepositExtraJson
    }
    type MediatorInfoBase struct {
      AddStr     string `json:"account"`    // mediator账户地址,主要用于产块签名
      RewardAdd  string `json:"rewardAdd"`  // mediator奖励地址,主要用于接收产块奖励
      InitPubKey string `json:"initPubKey"` // mediator的群签名初始公钥
      Node       string `json:"node"`       // mediator节点网络信息,包括ip和端口等
    }
    type MediatorApplyInfo struct {
      Logo        string `json:"logo"`      // 节点图标url
      Name        string `json:"name"`      // 节点名称
      Location    string `json:"loc"`       // 节点所在地区
      Url         string `json:"url"`       // 节点宣传网站
      Description string `json:"applyInfo"` // 节点详细信息描述
    }
    type JurorDepositExtraJson struct {
      PublicKey string `json:"public_key"` //账户地址对应的公钥
    }
  • 返回值说明

    type TxExecuteResult struct {
    	TxContent string      `json:"txContent"` // 交易内容
    	TxHash    common.Hash `json:"txHash"`    // 交易hash
    	TxSize    string      `json:"txSize"`    // 交易大小
    	TxFee     string      `json:"txFee"`     // 交易费用
    	Tip       string      `json:"tip"`       // 提示
    	Warning   string      `json:"warning"`   // 警告
    }
  • console命令行举例

    > mediator.apply({account:"P1xxxx", initPubKey:"xxxxx", node:"pnode://xxxxx@x.x.x.x:30303", public_key:"xxxx"}, 0.002)

mediator.getInfo

  • API 说明

    获取指定mediator的相关信息

  • 函数定义

    GetInfo(addStr string) (*modules.MediatorInfo, error)
  • 参数说明

    addStr string // mediator地址
  • 返回值说明

    type MediatorInfo struct {
    	*core.MediatorInfoBase
    	*core.MediatorApplyInfo
    	*core.MediatorInfoExpand
    }
    type MediatorInfoExpand struct {
    	TotalMissed          uint64 `json:"totalMissed"`          // 当前mediator未能按照调度生产区块的总个数
    	LastConfirmedUnitNum uint32 `json:"lastConfirmedUnitNum"` // 当前mediator最新生产的区块编号
    	TotalVotes           uint64 `json:"totalVotes"`           // 当前mediator的总共得票数量
    }

mediator.lookupMediatorInfo

  • API 说明

    遍历当前链所有mediator的信息

  • 函数定义

    LookupMediatorInfo() []*modules.MediatorInfo
  • 参数说明

  • 返回值说明

    所有mediator的信息列表


mediator.update[*]

  • API 说明

    更新 mediator 信息

  • 函数定义

    Update(args modules.MediatorUpdateArgs) (*TxExecuteResult, error)
  • 参数说明

    type MediatorUpdateArgs struct {
      AddStr      string  `json:"account"`              // 要更新的mediator地址
      RewardAdd   *string `json:"rewardAdd" rlp:"nil"`  // mediator奖励地址,主要用于接收产块奖励
      InitPubKey  *string `json:"initPubKey" rlp:"nil"` // mediator的群签名初始公钥
      Node        *string `json:"node" rlp:"nil"`       // 节点网络信息,包括ip和端口等
      Logo        *string `json:"logo" rlp:"nil"`       // 节点图标url
      Name        *string `json:"name" rlp:"nil"`       // 节点名称
      Location    *string `json:"loc" rlp:"nil"`        // 节点所在地区
      Url         *string `json:"url" rlp:"nil"`        // 节点宣传网站
      Description *string `json:"applyInfo" rlp:"nil"`  // 节点详细信息描述
    }
  • 返回值说明

    交易的执行结果,或者错误信息

  • console命令行举例

    > mediator.update({account:"P1xxxx", rewardAdd:"P1xxx"})

mediator.startProduce[*]

  • API 说明

    让mediator节点开始生产区块

  • 函数定义

    StartProduce() bool
  • 参数说明

  • 返回值说明

    true,表示节点之前没有生产区块,现在开始生产区块;

    false,表示节点之前已经在生产区块,现在继续生产区块;


mediator.isActive

  • API 说明

    判断指定地址是否为活跃mediator

  • 函数定义

    IsActive(addStr string) (bool, error)
  • 参数说明

    addStr string // mediator地址
  • 返回值说明

    true 或者 false,或者其他错误信息


mediator.listActives

  • API 说明

    获取所有活跃mediator

  • 函数定义

    ListActives() []string
  • 参数说明

  • 返回值说明

    mediator地址数组列表


mediator.payDeposit[*]

  • API 说明

    申请mediator后,缴纳保证金

  • 函数定义

    PayDeposit(from string, amount decimal.Decimal) (*TxExecuteResult, error)
  • 参数说明

    from string // mediator地址
    amount decimal.Decimal // 缴纳保证金的额度,例如50,单位ptn
  • 返回值说明

    交易的执行结果,或者错误信息


mediator.stopProduce[*]

  • API 说明

    让mediator节点停止生产区块

  • 函数定义

    StopProduce() bool
  • 参数说明

  • 返回值说明

    true,表示节点之前在生产区块,现在停止生产区块

    false,表示节点之前就停止生产区块,现在也不区块


mediator.vote[*]

  • API 说明

    指定账户给指定若干mediator投票

  • 函数定义

    Vote(voterStr string, mediatorStrs []string) (*TxExecuteResult, error)
  • 参数说明

    voterStr string // 投票账户地址
    mediatorStrs []string // 被投的mediator地址列表
  • 返回值说明

    交易的执行结果,或者错误信息


mediator.dumpInitDKS

  • API 说明

    随机获取一组mediator群签名所需要的初始公私钥

  • 函数定义

    DumpInitDKS() (res InitDKSResult)
  • 参数说明

  • 返回值说明

    type InitDKSResult struct {
    	PrivateKey string `json:"private_key"` // 初始群签名私钥
    	PublicKey  string `json:"public_key"`  // 初始群签名公钥
    }

mediator.getNextUpdateTime

  • API 说明

    获取下一次链维护(包括换届)的时间

  • 函数定义

    GetNextUpdateTime() string
  • 参数说明

  • 返回值说明

    下一次链维护时间


mediator.isApproved

  • API 说明

    申请成为mediator后,获取基金会的批准信息

  • 函数定义

    IsApproved(addStr string) (string, error)
  • 参数说明

    指定申请mediator的地址

  • 返回值说明

    批准信息,以及错误信息


mediator.listAll

  • API 说明

    获取所有mediator的列表

  • 函数定义

    ListAll() []string
  • 参数说明

  • 返回值说明

    所有mediator的地址列表


mediator.getDeposit

  • API 说明

    获取指定mediator的保证金缴纳情况

  • 函数定义

    GetDeposit(addStr string) (*modules.MediatorDepositJson, error)
  • 参数说明

    addStr string // mediator地址
  • 返回值说明

    type MediatorDepositJson struct {
      MediatorDepositExtra
      DepositBalanceJson
    }
    type MediatorDepositExtra struct {
      ApplyEnterTime string `json:"apply_enter_time"` // 申请加入时间
      ApplyQuitTime  string `json:"apply_quit_time"`  // 申请退出时间
      Status         string `json:"status"`           // 申请状态  申请、同意、退出
      AgreeTime      string `json:"agree_time"`       // 基金会同意申请时间'
    }
    type DepositBalanceJson struct {
      Balance   decimal.Decimal `json:"balance"`
      EnterTime string          `json:"enter_time"`
      Role      string          `json:"role"`
      PublicKey string          `json:"public_key"`
    }

mediator.getVoted

  • API 说明

    获取指定账户投票的mediator地址

  • 函数定义

    GetVoted(addStr string) []string
  • 参数说明

    addStr string // 账户地址
  • 返回值说明

    投票的mediator地址列表


mediator.isInList

  • API 说明

    判断指定地址是否是mediator

  • 函数定义

    IsInList(addStr string) (bool, error)
  • 参数说明

    addStr string // 账户地址
  • 返回值说明

    true 或者 false,或者其他错误信息


mediator.listVoteResults

  • API 说明

    获取当前所有mediator投票情况

  • 函数定义

    ListVoteResults() map[string]uint64
  • 参数说明

  • 返回值说明

    每个mediator以及对应的得票数量


mediator.listVotingFor

  • API 说明

    获取指定mediator的被投票情况

  • 函数定义

    ListVotingFor(addStr string) (map[string]uint64, error)
  • 参数说明

    addStr string // mediator地址

  • 返回值说明

    给该mediator投票的每个账户地址以及投票数


mediator.quit[*]

  • API 说明

    指定mediator申请退出列表

  • 函数定义

    Quit(medAddStr string) (*TxExecuteResult, error)
  • 参数说明

    medAddStr string // mediator地址
  • 返回值说明

    交易执行情况,或者错误信息



6.Wallet rpc接口

wallet.getAddrTxHistory

  • API 说明:获取地址的交易记录, 【注意:节点必须在toml配置中启用了AddrTxsIndex才有数据】
  • 函数定义 func(s *PublicWalletAPI)GetAddrTxHistory(ctx context.Context, addr string) ([]*ptnjson.TxHistoryJson, error)
  • 参数说明 addr为PTN地址
  • 返回值说明 地址交易记录的结构体
  • 请求示例
{"jsonrpc":"2.0","method":"wallet_getAddrTxHistory","params":["P1Jp9qTpvERqPhTTwzm4HwvG3AYMnqVUyfm"],"id":1}

{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
        {
            "tx_hash": "0xc4d08b7b812a5d9e7ded6575ba4bf1f111e84d57c4e8c1194ea4ee6063e28230",
            "tx_size": 364,
            "payment": {
                "inputs": [
                    {
                        "txid": "0xcea081feb800da28aabaf1e964f06cbaed8dfc72558439bdff0a22e42e0978c9",
                        "message_index": 0,
                        "out_index": 1,
                        "unlock_script": "1a88d8fff9f6e69680059e7df1a176f60c9b9597437fb73a83228abdb673da5f47a51725b399d05495a6bac366c1b9ae1ee4a3326e330b02eabff022578bd67e01 02c06e485a0cbccfcdc18dafa91af89865388cc8f14b52c10ec472498edda687fe",
                        "from_address": "P1Jp9qTpvERqPhTTwzm4HwvG3AYMnqVUyfm"
                    }
                ],
                "outputs": [
                    {
                        "amount": 100000000000,
                        "asset": "PTN",
                        "to_address": "P1GDBkAAGktTDTPRUeAZE1KT7HcL3eZ46zc",
                        "lock_script": "OP_DUP OP_HASH160 a6d7d8d67fe54e0da4480fe4708f649c80006d44 OP_EQUALVERIFY OP_CHECKSIG"
                    },
                    {
                        "amount": 663100000000,
                        "asset": "PTN",
                        "to_address": "P1Jp9qTpvERqPhTTwzm4HwvG3AYMnqVUyfm",
                        "lock_script": "OP_DUP OP_HASH160 c3651067bd81a5974773184c5004a462ad9765c8 OP_EQUALVERIFY OP_CHECKSIG"
                    }
                ],
                "locktime": 12
            },
            "data": {
                "main_data": "http://www.bejson.com",
                "extra_data": "P1GDBkAAGktTDTPRUeAZE1KT7HcL3eZ46zc"
            },
            "invoke_request": null,
            "timestamp": "2019-05-08 17:18:12 +0800 CST"
        }
    ]
}

wallet.getFileInfoByFileHash

  • API 说明:根据存证文件哈希查询存证信息

  • 函数定义:getFileInfo(filehash string) (string, error)

  • 参数说明:文件哈希值(string)

  • 返回值说明:

    unithash 区块哈希值
    unitindex 区块高度
    parentshash 上一个区块哈希值
    transactionhash 交易哈希值
    timestamp 时间戳
    filehash 文件哈希值
    extradata 附加字段
    

wallet.getProofOfExistencesByRef

  • API 说明:根据存证引用标识符查询存证信息

  • 函数定义:QueryProofOfExistenceByReference(ref string) ([]*ptnjson.ProofOfExistenceJson, error)

  • 参数说明:存证引用标识符(string)

  • 返回值说明:

    unit_hash  区块哈希值
    tx_id      交易哈希值
    timestamp  时间戳
    main_data  主要存证内容
    extradata  附加字段
    reference  存证的引用标识符
    

wallet.createProofOfExistenceTx

  • API 说明:创建交易构建存证信息
  • 函数定义:CreateProofTransaction( params string, password string) (common.Hash, error)
  • 参数说明: {"jsonrpc":"2.0","method":"wallet_createProofOfExistenceTx","params":["P15P5oHLjvoqMHKXjcV2joHYanTnMBDrZzG","存证","附加信息","A","1"],"id":1}
P15P5oHLjvoqMHKXjcV2joHYanTnMBDrZzG 交易发起方地址 
存证 存证内容(string)
附加信息 附加字段,随存证内容一同上链(string)
A 存证的引用标识符,可根据此标识查询存证信息(string)
1 区块链标识(固定值)
id:1 区块链内部标记(固定值)
  • 返回值说明:这笔交易的哈希值(transactionHash)

wallet.getAddrUtxos

  • API 说明 获取地址所有的UTXO
  • 函数定义 GetAddrUtxos(addr common.Address) (map[modules.OutPoint]*modules.Utxo, error)
  • 参数说明 将获取UTXO的地址
  • 返回值说明 返回值为地址的UTXO 示例:
{"jsonrpc":"2.0","method":"wallet_getAddrUtxos","params":["P1Pn45yitddV7qL9EXhPKCkiqkqDjj2mEEn"],"id":1}
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "{\"item\":\"address_utxos\",\"info\":[{\"txid\":\"0xe4e024bdf9c3c650f6feed3836c8d5e6e48fd5cd196270d7e3b147e2dd329213\",\"message_index\":0,\"out_index\":1,\"amount\":99999989900000000,\"asset\":\"PTN\",\"pk_script_hex\":\"0x76a914f9d80fbaaf56c4fadead8c5ab135600610eb1aae88ac\",\"pk_script_string\":\"OP_DUP OP_HASH160 f9d80fbaaf56c4fadead8c5ab135600610eb1aae OP_EQUALVERIFY OP_CHECKSIG\",\"create_time\":\"2019-05-09T11:00:42+08:00\",\"lock_time\":0,\"flag_status\":\"normal\",\"coin_days\":0,\"amount_with_interest\":99999989900000000}]}"
}

wallet.getFileInfoByTxid

  • API 说明:根据交易哈希值查询存证信息

  • 函数定义:getFileInfo(filehash string) (string, error)

  • 参数说明:文件哈希值(string)

  • 返回值说明:

    unithash 区块哈希值
    unitindex 区块高度
    parentshash 上一个区块哈希值
    transactionhash 交易哈希值
    timestamp 时间戳
    filehash 文件哈希值
    extradata 附加字段
    

wallet.getPtnTestCoin

  • API 说明 GetPtnTestCoin(ctx context.Context, from string, to string, amount, password string, duration *uint64) (common.Hash, error)
  • 函数定义 从水龙头地址获取测试币
  • 参数说明 from:发送测试币的地址 to:接收测试币的地址 amount:发送数量 password:发送地址的私钥解锁密码 duration:地址解锁时间
  • 返回值说明 水龙头地址发送测试币后的交易hash值 请求示例 {"jsonrpc":"2.0","method":"wallet_getPtnTestCoin","params":["P15GK12gMx7Ei979MqSjsi7GgZf5Y2dn66e","P1GtaPbhCnSnMHpwEYbHYBVv4wMTz3yMUTG","10","1",10],"id":1}

wallet.transferPTN[*]

  • API 说明 从一个地址给另一个地址转帐
  • 函数定义 TransferPtn(ctx context.Context, from string, to string, amount decimal.Decimal, fee decimal.Decimal, Extra string, password string, duration *uint64)
  • 参数说明 from:发送测试币的地址 to:接收测试币的地址 amount:发送数量 fee:手续费 Extra:附加信息 password:发送地址的私钥解锁密码 duration:地址解锁时间
  • 返回值说明 交易hash值

wallet.createProofTransaction

  • API 说明:创建交易构建存证信息

  • 函数定义:CreateProofTransaction(params string, password string) (common.Hash, error)

  • 参数说明:

    from 交易发起方 (
    proof 上链文件哈希值
    extra 附加字段 随proof一同上链
    fee 交易手续费
    outputs 交易的输出
    address 交易接受方(实际部署后将账户地址告知)
    amount 转账金额
    locktime 锁定脚本时间(固定值)
    id 区块链内部标记(固定值)
    
  • 返回值说明:这笔交易的哈希值(transactionHash)

wallet.getAllTokenInfo

  • API 说明 获取所有PRC20和PRC721 token 信息
  • 函数定义 GetAllTokenInfo(ctx context.Context) (string, error)
  • 参数说明 无需显式指定
  • 返回值说明

所有PRC20和PRC721 token 信息 示例: "[{"Symbol":"ZXL","TokenType":1,"Status":0,"CreateAddr":"P16ipfCfnsDVsrJwyLLJquy7qyu7qcLzV3U","TotalSupply":1000,"SupplyAddr":"P16ipfCfnsDVsrJwyLLJquy7qyu7qcLzV3U","AssetID":"ZXL+10CZFEK3PL6GZOJJHT"}]"

wallet.getOneTokenInfo

  • API 说明 获取某一种PRC20和PRC721 token 信息
  • 函数定义 GetOneTokenInfo(ctx context.Context, symbol string) (string, error)
  • 参数说明 token 的symbol,即简称
  • 返回值说明 该种token的信息

wallet.getStxo

  • API 说明 查询已花费UTXO
  • 函数定义 GetStxo(ctx context.Context, txid string, msgIdx int, outIdx int) (*ptnjson.StxoJson, error)
  • 参数说明 txid:交易hash msgIdx: message index outIdx: outindex
  • 返回值说明 已花费的StxoJson结构体
type StxoJson struct {
  TxHash         string    `json:"txid"`          // reference Utxo struct key field
  MessageIndex   uint32    `json:"message_index"` // message index in transaction
  OutIndex       uint32    `json:"out_index"`
  Amount         uint64    `json:"amount"`           // 数量
  Asset          string    `json:"asset"`            // 资产类别
  PkScriptHex    string    `json:"pk_script_hex"`    // 要执行的代码段
  PkScriptString string    `json:"pk_script_string"` // 要执行的代码段
  Time           time.Time `json:"create_time"`      //创建该UTXO的时间(打包到Unit的时间)
  LockTime       uint32    `json:"lock_time"`        //锁定时间
  SpentByTxId    string    `json:"spent_by_tx_id"`   //交易hash
  SpentTime      time.Time `json:"spent_time"`       //花费时间
  //CoinDays       uint64    `json:"coin_days"`        //这个Utxo存在多少天了。用于计算利息
  //AmountWithInterest uint64    `json:"amount_with_interest"` //包含利息后的金额
}

wallet.sendRawTransaction

  • API 说明 广播签名后的交易
  • 函数定义 SendRawTransaction(ctx context.Context, params string) (common.Hash, error)
  • 参数说明 params:签名并且进行rlp编码后的交易字符串
  • 返回值说明 交易hash

wallet.transferToken[*]

  • API 说明构造并签名广播传输token的交易
  • 函数定义 TransferToken(ctx context.Context, asset string, from string, to string,amount decimal.Decimal, fee decimal.Decimal, Extra string, password string, duration *uint64) (common.Hash, error)
  • 参数说明 asset:资产类型 from:发送者地址 to:接收者地址 amount:数量 fee:手续费 Extra:附加信息 password:地址解锁密码 duration:解锁时长
  • 返回值说明 交易hash

wallet.createRawTransaction

  • API 说明 创建原始交易
  • 函数定义 CreateRawTransaction(ctx context.Context, from string, to string, amount, fee decimal.Decimal) (string, error)
  • 参数说明 from:发送地址 to:接收地址 amount:数量 fee:手续费
  • 返回值说明 原始交易经过rlp编码后的hex字符串

wallet.getBalance

  • API 说明 获取当前地址余额
  • 函数定义 GetBalance(ctx context.Context, address string) (map[string]decimal.Decimal, error)
  • 参数说明 address:PTN地址
  • 返回值说明 资产类型及其余额

wallet.getProofOfExistencesByAsset

  • API 说明:根据token标识符查询存证信息(tranfertoken调用时添加存证信息)

  • 函数定义:QueryProofOfExistenceByAsset(asset string) ([]*ptnjson.ProofOfExistenceJson, error)

  • 参数说明:token 标识符(string)

  • 返回值说明:

    unit_hash 区块哈希值
    tx_id 交易哈希值
    timestamp 时间戳
    main_data 主要存证内容
    extradata 附加字段
    reference 存证的引用标识符
    

7.Contract rpc接口

contract.ccinstall[*]

  • API 说明:本地接口测试,完成用户合约模板的本地安装

  • 函数定义 Ccinstall(ccname, ccpath, ccversion, ccdescription, ccabi, cclanguage string) (hexutil.Bytes, error)

  • 参数说明

    • ccname:模板名称
    • ccpath:模板安装路径
    • ccversion:模板版本号
    • ccdescription:模板描述
    • ccabi:abi描述
    • cclanguage:模板语言类型
  • 返回值说明

    • hexutil.Bytes:模板Id
    • error:错误信息

contract.ccdeploy[*]

  • API 说明:本地接口测试,完成合约模板的本地部署
  • 函数定义 Ccdeploy(templateId string, param []string) (*ContractDeployRsp, error)
  • 参数说明
    • templateId:合约模板Id
    • param:部署合约模板时指定init参数
  • 返回值说明
    • ContractDeployRsp:部署合约返回信息,包含了请求Id及合约Id
type ContractDeployRsp struct {
	ReqId      string `json:"reqId"`
	ContractId string `json:"ContractId"`
}
  • error:错误信息

contract.ccinvoke[*]

  • API 说明:本地接口测试,完成合约调用
  • 函数定义 Ccinvoke(contractAddr string, param []string)(string, error)
  • 参数说明
    • contractAddr:合约地址
    • param:合约执行参数
  • 返回值说明
    • string:合约执行结果
    • error:合约执行错误信息

contract.ccquery

  • API 说明:合约执行结果查询
  • 函数定义 Ccquery(contractAddr string, param []string, timeout uint32) (string, error)
  • 参数说明
    • contractAddr:合约地址
    • param:合约查询参数
    • timeout:合约查询超时时间
  • 返回值说明
    • string:合约查询结果
    • error:错误信息

contract.ccinstalltx[*]

  • API 说明:合约模板安装
  • 函数定义 Ccinstalltx(from, to, amount, fee, tplName, path, version, ccdescription, ccabi, cclanguage string, addr []string) (*ContractInstallRsp, error)
  • 参数说明
    • from:转账发送方地址
    • to:转账接收方地址
    • amount:转账金额,单位PTN
    • fee:本次交易费用,单位PTN
    • tplName:模板名称
    • path:模板文件路径
    • version:模板名称
    • ccdescription:模板描述
    • ccabi:abi描述
    • cclanguage:模板语言类型,默认"go"
    • addr:指定合约部署、执行的节点地址
  • 返回值说明
    • ContractInstallRsp:合约安装信息,包括交易请求Id,合约模板Id
type ContractInstallRsp struct {
	ReqId string `json:"reqId"`
	TplId string `json:"tplId"`
}
  • error:错误信息

contract.ccdeploytx[*]

  • API 说明:完成合约模板的部署
  • 函数定义 Ccdeploytx(ctx context.Context, from, to, amount, fee, tplId string, param []string, extData string) (*ContractDeployRsp, error)
  • 参数说明
    • from:转账发送方地址
    • to:转账接收方地址
    • amount:转账金额,单位PTN
    • fee:本次交易费用,单位PTN
    • tplId:合约模板Id
    • param:合约部署参数,即合约init的指定参数
    • extData:合约部署扩展数据
  • 返回值说明
    • ContractDeployRsp:合约部署信息,包括合约交易请求Id,合约Id
type ContractDeployRsp struct {
	ReqId      string `json:"reqId"`
	ContractId string `json:"ContractId"`
}
  • error:错误信息

contract.ccinvoketx[*]

  • API 说明:合约执行,实现合约的invoke功能
  • 函数定义 Ccinvoketx(from, to, amount, fee, deployId string, param []string, certID string, timeout string) (*ContractDeployRsp, error)
  • 参数说明
    • from:转账发送方地址
    • to:转账接收方地址
    • amount:转账金额,单位PTN
    • fee:本次交易费用,单位PTN
    • deployId:合约部署Id,即合约Id
    • param:合约执行参数,即合约invoke对应的参数
    • certID:用户证书ID
    • timeout:合约执行超时时间,设置为0,则默认使用配置文件制定超时时间,单位秒
  • 返回值说明
    • ContractDeployRsp:合约执行结果,包括合约交易请求Id,合约Id
type ContractDeployRsp struct {
	ReqId      string `json:"reqId"`
	ContractId string `json:"ContractId"`
}
  • error:错误信息

contract.ccinvoketxPass[*]

  • API 说明:合约执行,通过接口指定密码方式解锁账户
  • 函数定义 CcinvoketxPass(from, to, amount, fee, deployId string, param []string, password string, duration *uint64, certID string) (string, error)
  • 参数说明
    • from:转账发送方地址
    • to:转账接收方地址
    • amount:转账金额,单位PTN
    • fee:本次交易费用,单位PTN
    • deployId:合约部署Id,即合约Id
    • param:合约执行参数,即合约invoke对应的参数
    • password:账户密码
    • duration:解锁账户有效时间
    • certID:用户证书ID
  • 返回值说明
    • string:执行结果信息
    • error:错误信息

contract.ccinvokeToken[*]

  • API 说明:完成token合约执行功能
  • 函数定义 CcinvokeToken(from, to, toToken, amount, fee, assetToken, amountToken, deployId string, param []string) (*ContractDeployRsp, error)
  • 参数说明
    • from:转账发送方地址
    • to:转账接收方地址
    • amount:转账金额,单位PTN
    • fee:本次交易费用,单位PTN
    • assetToken:token资产Id
    • amountToken:token金额
    • deployId:部署Id,即合约Id
    • param:合约执行参数,即合约invoke的参数
  • 返回值说明
    • ContractDeployRsp:合约执行结果,包括合约交易请求Id,合约Id
type ContractDeployRsp struct {
	ReqId      string `json:"reqId"`
	ContractId string `json:"ContractId"`
}
  • error:错误信息

contract.ccstoptx[*]

  • API 说明:停止用户合约执行
  • 函数定义 Ccstoptx(ctx context.Context, from, to, amount, fee, contractId string) (string, error)
  • 参数说明
    • from:转账发送方地址
    • to:转账接收方地址
    • amount:转账金额,单位PTN
    • fee:本次交易费用,单位PTN
    • contractId:合约Id
  • 返回值说明
    • string:合约交易请求Id
    • error:错误信息

contract.depositContractInvoke[*]

  • API 说明:保证金合约执行
  • 函数定义 DepositContractInvoke(from, to, amount, fee string, param []string) (string, error)
  • 参数说明
    • from:转账发送方地址
    • to:转账接收方地址
    • amount:转账金额,单位PTN
    • fee:本次交易费用,单位PTN
    • param:合约执行参数
  • 返回值说明
    • string:合约执行结果
    • error:错误信息

contract.sysConfigContractInvoke[*]

  • API 说明:系统配置合约执行
  • 函数定义 SysConfigContractInvoke(from, to, amount, fee string, param []string) (string, error)
  • 参数说明
    • from:转账发送方地址
    • to:转账接收方地址
    • amount:转账金额,单位PTN
    • fee:本次交易费用,单位PTN
    • param:合约执行参数
  • 返回值说明
    • string:合约执行结果
    • error:错误信息

contract.depositContractQuery

  • API 说明:保证金合约执行结果查询
  • 函数定义 DepositContractQuery(param []string) (string, error)
  • 参数说明
    • param:查询参数
  • 返回值说明
    • string:查询结果
    • error:错误信息

contract.sysConfigContractQuery

  • API 说明:系统配置合约执行结果查询
  • 函数定义 SysConfigContractQuery(param []string) (string, error)
  • 参数说明
    • param:查询参数
  • 返回值说明
    • string:查询结果
    • error:错误信息

contract.getAllContractsUsedTemplateId

  • API 说明:查看某个模板id对应着多个合约实例的合约信息
  • 函数定义 GetAllContractsUsedTemplateId(tplId string) ([]*ptnjson.ContractJson, error)
  • 参数说明
    • tplId:模板Id
  • 返回值说明
    • ptnjson.ContractJson:合约Json信息
type ContractJson struct {
	//Contract Id 即Address,[20]byte,
	// 根据用户创建合约实例申请的RequestId截取其后20字节生成
	ContractId      string                `json:"contract_id"` //Hex
	ContractAddress string                `json:"contract_address"`
	TemplateId      string                `json:"tpl_id"`
	Name            string                `json:"contract_name"`
	Status          byte                  `json:"status"` // 合约状态
	Creator         string                `json:"creator"`
	CreationTime    time.Time             `json:"creation_time"` // creation  date
	Template        *ContractTemplateJson `json:"template"`
}
  • error:错误信息

contract.getContractInfoByAddr

  • API 说明:通过合约地址,获取合约的详细信息
  • 函数定义 GetContractInfoByAddr(contractAddr string) (*ptnjson.ContractJson, error)
  • 参数说明
    • contractAddr:合约地址
  • 返回值说明
    • ptnjson.ContractJson:合约Json格式的详细信息
type ContractJson struct {
	//Contract Id 即Address,[20]byte,
	// 根据用户创建合约实例申请的RequestId截取其后20字节生成
	ContractId      string                `json:"contract_id"` //Hex
	ContractAddress string                `json:"contract_address"`
	TemplateId      string                `json:"tpl_id"`
	Name            string                `json:"contract_name"`
	Status          byte                  `json:"status"` // 合约状态
	Creator         string                `json:"creator"`
	CreationTime    time.Time             `json:"creation_time"` // creation  date
	Template        *ContractTemplateJson `json:"template"`
}
  • error:错误信息

contract.getContractInfoById

  • API 说明:通过合约Id,获取合约的详细信息
  • 函数定义 GetContractInfoById(contractId string) (*ptnjson.ContractJson, error)
  • 参数说明
    • contractId:合约Id
  • 返回值说明
    • ptnjson.ContractJson:合约Json格式的详细信息
type ContractJson struct {
	//Contract Id 即Address,[20]byte,
	// 根据用户创建合约实例申请的RequestId截取其后20字节生成
	ContractId      string                `json:"contract_id"` //Hex
	ContractAddress string                `json:"contract_address"`
	TemplateId      string                `json:"tpl_id"`
	Name            string                `json:"contract_name"`
	Status          byte                  `json:"status"` // 合约状态
	Creator         string                `json:"creator"`
	CreationTime    time.Time             `json:"creation_time"` // creation  date
	Template        *ContractTemplateJson `json:"template"`
}
  • error:错误信息

contract.getContractTemplateInfoById

  • API 说明:通过合约模板id获取模板信息
  • 函数定义 GetContractTemplateInfoById(contractTplId string) (*modules.ContractTemplate, error)
  • 参数说明
    • contractTplId:合约模板Id
  • 返回值说明
    • modules.ContractTemplate合约模板详细信息
type ContractTemplate struct {
	TplId          []byte        `json:"tpl_id"`
	TplName        string        `json:"tpl_name"`
	TplDescription string        `json:"tpl_description"`
	Path           string        `json:"install_path"`
	Version        string        `json:"tpl_version"`
	Abi            string        `json:"abi"`
	Language       string        `json:"language"`
	AddrHash       []common.Hash `json:"addr_hash" rlp:"nil"`
	Size           uint16        `json:"size"`
	Creator        string        `json:"creator"`
}
  • error:错误信息

contract.listAllContractTemplates

  • API 说明:获取已经安装过的合约模板信息

  • 函数定义 listAllContractTemplates()([]*ptnjson.ContractTemplateJson, error)

  • 参数说明

  • 返回值说明

    • ptnjson.ContractTemplateJson:合约模板Json信息
type ContractTemplateJson struct {
	TplId          string   `json:"tpl_id"`
	TplName        string   `json:"tpl_name"`
	TplDescription string   `json:"tpl_description"`
	Path           string   `json:"install_path"`
	Version        string   `json:"tpl_version"`
	Abi            string   `json:"abi"`
	Language       string   `json:"language"`
	AddrHash       []string `json:"addr_hash" rlp:"nil"`
	Size           uint16   `json:"size"`
	Creator        string   `json:"creator"`
}
  • error:错误信息

contract.listAllContracts

  • API 说明:获取部署的所有合约信息

  • 函数定义 listAllContracts() ([]*ptnjson.ContractJson, error)

  • 参数说明

  • 返回值说明

    • ptnjson.ContractJson:合约Json格式信息
type ContractJson struct {
	//Contract Id 即Address,[20]byte,
	// 根据用户创建合约实例申请的RequestId截取其后20字节生成
	ContractId      string                `json:"contract_id"` //Hex
	ContractAddress string                `json:"contract_address"`
	TemplateId      string                `json:"tpl_id"`
	Name            string                `json:"contract_name"`
	Status          byte                  `json:"status"` // 合约状态
	Creator         string                `json:"creator"`
	CreationTime    time.Time             `json:"creation_time"` // creation  date
	Template        *ContractTemplateJson `json:"template"`
}
  • error:错误信息

8.Txpool rpc接口

txpool.content

  • API 说明: 获取交易池所有的交易列表
  • 函数定义: func Content() map[string]map[string]*RPCTransaction
  • 参数说明:
  • 返回值说明:
    • pending:已打包的RPCTransaction的json详细信息
    • queued: 未打包的PCTransaction的json详细信息
    {
        pending: {
            0x55aef5756ba0d25cdde67fd8dc741a297c8697a37f2ca2e36038e9a480d60054: {
            hash: "0x55aef5756ba0d25cdde67fd8dc741a297c8697a37f2ca2e36038e9a480d60054",
            transaction_index: "0x0",
            unit_index: 18446744073709552000
          },
            0xa73cf5b26ff364a0018ff89cd28aae3564912b88d6a659d0e1825b6bf6c4294c: {
            hash: "0xa73cf5b26ff364a0018ff89cd28aae3564912b88d6a659d0e1825b6bf6c4294c",
            transaction_index: "0x1",
            unit_index: 24889
          }
        },
        queued: {}
    }
    

txpool.queue

  • API 说明:获取交易池中未打包交易列表
  • 函数定义:func Queue() map[common.Hash]*modules.Transaction
  • 参数说明:
  • 返回值说明:
    • hash为key的map列表,内容是交易的详细信息

txpool.pending

  • API 说明: 获取交易池已打包的未确认交易列表
  • 函数定义:func Pending() ([]*ptnjson.TxPoolPendingJson, error)
  • 参数说明:
  • 返回值说明:
    • txpoolPendingJson的列表信息
    • error 错误信息

txpool.status

  • API 说明: 获取交易池中的交易信息
  • 函数定义 func Status() map[string]hexutil.Uint
  • 参数说明:
  • 返回值说明:
    • pending:已经打包的交易数
    • queue:未打包的交易数
    • orphan:孤儿交易数
Clone this wiki locally