使用window.ethereum获取toWei函数



我只是想用JavaScript访问前端网站上的toWeiutils函数。

由于我们删除了window.web3,MetaMask不再自动重新加载链/网络更改上的页面。

(来源:https://docs.metamask.io/guide/provider-migration.html#summary-断裂变化(

所以我使用的是window.ethereum,到目前为止还不错。但是,即使在谷歌上进行了大量搜索,我也找不到使用window.ethereum访问.toWei(..)函数的直接示例。

例如,我想要这样的东西:

var weiVal = window.ethereum.toWei(String(eth_float), 'ether');

但是这个特殊的函数调用并不存在。我该怎么做?

toWei()函数是已删除的web3模块的一部分,不再是MetaMask浏览器扩展的一部分。

当前0导致代码:https://github.com/MetaMask/metamask-extension/search?q=toWei


但是,您可以将web3JS包导入到前端并从这里使用该函数。

<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
<script>
const web3 = new Web3();
const weiAmount = web3.utils.toWei("1", "ether");
console.log(weiAmount);
</script>

缩小包的来源:官方的web3.js repo-https://github.com/ChainSafe/web3.js

从以太坊转换为wei只是乘以10^-18(反之亦然乘以10^18(。这里有一个演示:

function e2w() {
val = document.getElementById("numberInput").value;
console.log("Wei: " + val * 10 ** 18);
}
function w2e() {
val = document.getElementById("numberInput").value;
console.log("Ethereum: " + val * 10 ** -18);
}
<form>
<label for="numberInput">Enter value</label><br>
<input type="number" step="any" id="numberInput"><br>
<button onclick="e2w()">Eth --> Wei</button>
<button onclick="w2e()">Wei --> Eth</button>
</form>

一个更通用的解决方案,用于所有以太坊单位之间的单位转换:

BigNumber.config({
DECIMAL_PLACES: 50
});
const units = {
"wei": 1,
"kwei": 10 ** 3,
"mwei": 10 ** 6,
"gwei": 10 ** 9,
"microether": 10 ** 12,
"milliether": 10 ** 15,
"ether": 10 ** 18,
}
function unitConverter() {
fromUnit = document.getElementById("from").value;
toUnit = document.getElementById("to").value;
inputNumber = document.getElementById("inputNumber").value;
result = new BigNumber(inputNumber).times(units[fromUnit]).div(units[toUnit]).toString(10);
document.getElementById("outputNumber").innerHTML = result;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/9.0.1/bignumber.min.js"></script>
<label for="from">from:</label>
<select id="from" name="fromUnits" onchange="unitConverter()">
<option value="wei">Wei</option>
<option value="kwei">Kwei (babbage)</option>
<option value="mwei">Mwei (lovelace)</option>
<option value="gwei">Gwei (shannon)</option>
<option value="microether">microether (szabo)</option>
<option value="milliether">milliether (finney)</option>
<option value="ether">Ether</option>
</select>
<p>
<label for="to">to:</label>
<select id="to" name="toUnits" onchange="unitConverter()">
<option value="wei">Wei</option>
<option value="kwei">Kwei (babbage)</option>
<option value="mwei">Mwei (lovelace)</option>
<option value="gwei">Gwei (shannon)</option>
<option value="microether">microether (szabo)</option>
<option value="milliether">milliether (finney)</option>
<option value="ether">Ether</option>
</select>
<p>
<label>Input</label>
<input id="inputNumber" type="number" placeholder="Input:" value=1 oninput="unitConverter()" onchange="unitConverter()">
<p>
<p>Output: <span id="outputNumber">1</span></p>

相关内容

  • 没有找到相关文章

最新更新