我正在尝试访问事务发送者的键集,而没有将publicKey作为字符串函数参数显式传递。
我知道在docs中有一个(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()函数,在两种情况下,发件人都返回“”

是否有最佳实践或变通办法?

(defun get-sender ()
   (let (tx-data (chain-data))
     [(at "sender" tx-data)]
   )
)
;returns -> [""]


这是javascript调用:

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


我正在寻找它来代替发送者的公钥

最佳答案

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

看到这里:https://github.com/kadena-io/pact-lang-api/blob/master/pact-lang-api.js#L366

例如,

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)

关于javascript - 在pact-lang smartcontract中获取发送方数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57098451/

10-12 06:22