标签: metamask

运行公共以太坊节点是否安全?

我正在用松露创造我的第一个以太坊合约.我希望Web应用程序可以在没有MetaMask的情况下使用,所以我想知道运行我自己的私有节点并从这样的前端连接是否是个好主意:

this.web3 = new Web3(new Web3.providers.HttpProvider('http://my-public-ip:8545'));
Run Code Online (Sandbox Code Playgroud)

这种方法有安全隐患吗?

security ethereum truffle web3-donotuse metamask

2
推荐指数
1
解决办法
1030
查看次数

dapp 需要 Metamask 吗?

与以太坊网络中的 DApp 通信是否需要元掩码?如果不是,那么与智能合约交互的另一种方式是什么?

blockchain ethereum metamask

2
推荐指数
1
解决办法
498
查看次数

web3.eth.accounts[0] 返回未定义并且 app.vote(1,{ from:web3.eth.accounts[0] }) 给出错误

我对 Solidity 很陌生,正在通过一个简单的网络应用程序来探索它。我正在尝试制作一个候选人投票网络应用程序,它接受一些详细信息和一个按钮,按下该按钮应将详细信息部署到智能合约创建的块中。当我尝试web3.eth.accounts[0]在 truffle console 中使用帐户详细信息时,它返回 undefined 。当我尝试使用 truffle 控制台从帐户 1 向候选人 1 发送选票时app.vote(1,{ from:web3.eth.accounts[0] }),我收到如下错误:

truffle(development)> web3.eth.accounts[0]
undefined
truffle(development)> app.vote(1,{ 
from:web3.eth.accounts[0] })
Thrown:
Error: The send transactions "from" field 
must be defined!
at evalmachine.<anonymous>:0:5
at sigintHandlersWrap (vm.js:272:15)
at Script.runInContext (vm.js:127:14)
at runScript
at bound (domain.js:426:14)
    at REPLServer.runBound [as eval] (domain.js:439:12)
    at REPLServer.onLine (repl.js:726:10)
    at REPLServer.emit (events.js:219:5)
    at REPLServer.EventEmitter.emit (domain.js:482:12)
    at REPLServer.Interface._onLine (readline.js:324:10)
    at REPLServer.Interface._line (readline.js:701:8)
    at REPLServer.Interface._ttyWrite (readline.js:1026:14)
    at REPLServer.self._ttyWrite (repl.js:803:7)
    at ReadStream.onkeypress (readline.js:200:10)
    at …
Run Code Online (Sandbox Code Playgroud)

javascript ethereum solidity web3js metamask

2
推荐指数
1
解决办法
3266
查看次数

如何验证以太坊metamask的签名?

我想使用元掩码在前端签署一条简单的消息,并在后端验证它以便用户登录。

所以在前端我这样做:

const accounts = await web3.eth.getAccounts();
let sign = await web3.eth.personal.sign(`some message here`, accounts[0], '');
Run Code Online (Sandbox Code Playgroud)

验证用 Rust 编写的后端签名的最佳方法是什么?什么板条箱最适合这项任务?我真的很感激任何真正的代码,因为我是 Rust 的新手。

谢谢

rust metamask

2
推荐指数
1
解决办法
1880
查看次数

Metamask注入的window.ethereum和web3.js之间有什么关系吗?我们可以两者都使用吗?

我正在学习 DApp 编程,出现的一个问题是 Metamask 和 web3.js 注入的 API 之间的区别。据我了解,MetaMask 注入一个有自己的 API 的对象,与 web3.js 库无关。它是否正确?我仍然可以将 web3.js 库与 MetaMask 一起使用吗?在后一种情况下,我该怎么办?如果有人能进一步解释这种差异,我将不胜感激。谢谢!

blockchain ethereum smartcontracts web3js metamask

2
推荐指数
1
解决办法
2613
查看次数

使用 web3 获取元掩码个人资料图片和名称

我们是否可以使用 web3 获取 Metamask 个人资料图片和姓名?我正在使用 web3 的 React 前端。据我所知,我用来web3.eth.get.Accounts().then(rsp=>rsp[0])拿钱包。有人可以向我解释一下吗?

web3js metamask

2
推荐指数
1
解决办法
3305
查看次数

未定义的 window.web3

当我尝试通过 web3js 和 MetaMask 调用以太坊智能合约时,我遇到了获取 window.web3 的问题。该消息表示该值未定义。

<script src="jquery.min.js"></script>
<script src="web3.min.js"></script>

<script type="text/javascript">

window.addEventListener('load',
function() {
    $("#loader").hide();

 	console.log('!');
	web3 = window.web3;
	console.log(web3);

    // Checking if Web3 has been injected by the browser (Mist/MetaMask)
    if (typeof web3 !== 'undefined') {
        // Use Mist/MetaMask's provider
        web3 = new Web3(web3.currentProvider);
        window.web3 = new Web3(web3.currentProvider);

    	console.log(web3.currentProvider);

        if (web3.currentProvider.isMetaMask === true) {

            startApp();
        } else {

            $('#results').html('No web3? Please use google chrome and metamask plugin to enter this Dapp!');

        }
    }
});
...
Run Code Online (Sandbox Code Playgroud)

安慰:

! …

javascript ethereum web3js web3-donotuse metamask

1
推荐指数
1
解决办法
2190
查看次数

如何使用 tronweb 获取 tronlink 中当前的活跃帐户?

我正在尝试访问当前登录的 tronlink 帐户,以便使用 tronlink 为我的 dapp 进行身份验证。使用metamask和web3我可以使用以下方法获取MetaMask上当前的活动帐户:

const userPublicAddress = web3.eth.coinbase
Run Code Online (Sandbox Code Playgroud)

tronweb 和 tronlink 的类似方法是什么?我在文档中没有发现这一点。

javascript truffle metamask tronweb

1
推荐指数
1
解决办法
2757
查看次数

sendTransaction 的值格式有问题

我对 MetaMask 中的交易有一个关于值格式的问题,我将代码放在下面:

<script type="text/javascript">

    const sendEthButton = document.querySelector('.sendEthButton');

    sendEthButton.addEventListener('click', () => {
      ethereum
        .request({
          method: 'eth_sendTransaction',
          params: [
            {
              from: ethereum.selectedAddress,
              to: '{{contractCreator}}',
              value: '0x29a2241af62c0000',
            },
          ],
        })
        .then((txHash) => console.log(txHash))
        .catch((error) => console.error);
    });

</script>
Run Code Online (Sandbox Code Playgroud)

我已将 MetaMask 正确连接到网站和 Ganache,当我按下页面中的按钮时,交易也会出现在插件中,但只有在代码中使用此值时,我才能看到正确的值 (3),但我不知道如何是格式化。

我尝试过 web3.toWei(number, 'ether') 和 web3.toHex(number) 但它显示了奇怪的值。

例如,如果我用 web3.toWei(1, ether) 替换该值,它会在 MetaMask 窗口中显示 4722.366483。

javascript transactions ethereum web3js metamask

1
推荐指数
1
解决办法
1071
查看次数

为以太坊交易分配“值”参数

我正在尝试将 0.05 以太币的值分配给以太坊交易的 value 参数,如下面的代码所述。我不明白如何将 50000000000000000 Wei (0.05 Eth) 转换为描述的格式“0x29a2241af62c0000”。请有人告诉我如何将 50000000000000000 wei 转换为这种格式,它到底是什么?

//Sending Ethereum to an address
sendEthButton.addEventListener('click', () => {
  ethereum
    .request({
      method: 'eth_sendTransaction',
      params: [
        {
          from: accounts[0],
          to: '0x2f318C334780961FB129D2a6c30D0763d9a5C970',
          value: '0x29a2241af62c0000',
          gasPrice: '0x09184e72a000',
          gas: '0x2710',
        },
      ],
    })
    .then((txHash) => console.log(txHash))
    .catch((error) => console.error);
});
Run Code Online (Sandbox Code Playgroud)

solidity smartcontracts metamask

1
推荐指数
1
解决办法
1842
查看次数

如何为具有被调用的请求方法的 Window 对象以太坊编写打字稿接口

我正在运行以下函数

import { ethers } from "ethers";


async function requestAccount() {
    await window.ethereum.request({ method: "eth_requestAccounts" });
  }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我正在使用打字稿,它抱怨以下错误

Property 'ethereum' does not exist on type 'Window & typeof globalThis'

所以我能够用以下方法修复它

declare global {
  interface Window{
    ethereum?:any
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我认为这没有正确利用打字稿。我该如何编写才能使接口值正确。我认为它应该是一个内部有方法的对象,但不确定如何在打字稿中编写它。

任何帮助将不胜感激。

谢谢

javascript typescript ethereum metamask ethers.js

1
推荐指数
1
解决办法
2635
查看次数

metamask/web3 连接的问题

我想了解智能合约的前端是如何工作的。我正在尝试在我的计算机上运行此代码,但 metamask 始终未定义。您能否详细解释为什么会发生这种情况。为什么它不连接到元掩码提供程序?

        <script>
            $(".sendButton").click(function(){
                let Web3 = require('web3');
                if (typeof web3 !== 'undefined'){
                    web3 = new Web3(web3.currentProvider);
                }
                else {
                    alert('You have to install MetaMask !');
                }
                const abi = some abi
                const contractAddress = "some contract";
                let MyContract = web3.eth.contract(abi);
                let myContractInstance = MyContract.at(contractAddress);
                let functionData = myContractInstance.setMessage.getData($('#inputString').val());
                web3.eth.sendTransaction({
                        to:contractAddress,
                        from:web3.eth.accounts[0],
                        data: functionData,
                    },
                    function(error, response){
                        console.log(response);
                    });
            });
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

solidity web3-donotuse metamask

0
推荐指数
1
解决办法
2810
查看次数