我正在尝试访问事务发送者的键集,而没有将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/