在 php 变量中存储以太坊交易 ID(metamask)

Store ethereum transaction id (metamask) in php variable

我不习惯 javascript 我正在使用下面的代码通过 metamask 发送以太坊交易,看起来一切正常,我可以打印交易的哈希值用 document.write 发送,但无法找到一种方法将散列存储在 php 变量中,以便之后在数据库中处理它。

我需要在 php 变量中 'txHash' 的值。非常感谢一些帮助!谢谢

sendEthButton.addEventListener('click', () => {
  ethereum
    .request({
      method: 'eth_sendTransaction',
      params: [
        {
          from: accounts[0],
          to: '< - RECEIVING ACCOUNT - >',
          value: '0xDE0B6B3A7640000',
        },
      ],
    })
.then((txHash) => document.write(txHash))
.catch((error) => console.error);
});

PHP 在 之前 浏览器 JavaScript 执行。它无法与 MetaMask 交互,因为它无权访问扩展的 window.ethereum 对象。

但是,您可以使用 JavaScript fetch() 函数将交易 ID(或任何其他数据)从 JS 发送到 PHP 脚本。

ethereum.request({
    // ...
}).then((txHash) => {
    fetch('/txIdReceiver.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: 'hash=' + txHash,
    })
})

由于 x-www-form-urlencoded 内容类型,交易哈希现在在 PHP 脚本的 $_POST["hash"] 变量中可用。