我正在尝试访问事务的发送者的键集,而不显式地将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()函数,在这两种情况下,发送者都返回“”
对此有什么最佳实践或变通方法吗?
(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 -> [""]我希望它返回发送者的公钥
发布于 2019-07-19 00:44:56
您可以使用cmd的meta字段手动设置sender信息。
查看此处: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)https://stackoverflow.com/questions/57098451
复制相似问题