首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pact-lang智能合约中获取tx发送方数据

在pact-lang智能合约中获取tx发送方数据
EN

Stack Overflow用户
提问于 2019-07-18 23:54:31
回答 1查看 99关注 0票数 2

我正在尝试访问事务的发送者的键集,而不显式地将publicKey作为字符串函数参数传递。我知道在文档中有一个(chain-data)函数,它返回以下对象:

{“block-height”: 0,“block-time”: 0,“chain-id”: “”,“gas-limit”: 0,“gas-price”: 0,“sender”: “”}

我试过使用这种方法,发送者总是返回一个空字符串,我一直在通过javascript前端与我的智能合约交互,并且一直在9001端口本地托管一个区块链实例,如Kadena的github中的todo-mvc示例所述。为了与约定交互,我一直在使用pact-lang-api,特别是Pact.fetch.local()Pact.fetch.send()函数,在这两种情况下,发送者都返回“”

对此有什么最佳实践或变通方法吗?

代码语言:javascript
复制
(defun get-sender ()
   (let (tx-data (chain-data))
     [(at "sender" tx-data)]
   )
)
;returns -> [""]

这是javascript调用:

代码语言:javascript
复制
test = (keyset) => {
  const cmdObj = {
    pactCode: `(contract.get-sender)`,
    keyPairs: keyset
  }
  Pact.fetch.local(cmdObj, API_HOST)
  .then(res => {
     console.log(res.data);
  })
}
//logs -> [""]

我希望它返回发送者的公钥

EN

回答 1

Stack Overflow用户

发布于 2019-07-19 00:44:56

您可以使用cmd的meta字段手动设置sender信息。

查看此处:https://github.com/kadena-io/pact-lang-api/blob/master/pact-lang-api.js#L366

例如,

代码语言:javascript
复制
const cmds = {
                    keyPairs: KEY_PAIR,
                    pactCode: 'todos.delete-todos "id-1"',
                    meta: {
                      sender: KEY_PAIR.publicKey,
                      chainId: "",
                      gasPrice: 0,
                      gasLimit: 0
                    }
              }
Pact.fetch.send(cmds, API_HOST)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57098451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档