假设我创建了一个 erc20 令牌。现在我想制定一个智能合约,如果用户在另一个区块链(如比特币)上有 X 个硬币,则向用户发送 1 个硬币。那行得通吗?我可以使用卡尔达诺/以太坊/任何其他智能合约从其他区块链读取数据吗?
我想像 Etherscan 那样通过代币名称获取智能合约信息,但需要使用我的专用网络。
根据 web3 文档,如果我需要获取与智能合约相关的任何信息,我首先需要有一个智能合约地址和 ABI。但是在编写智能合约时,我没有将其存储在数据库中的命令。
我的主要目标是我需要创建一个浏览器的精确副本,如 Etherscan 和 bscscan.com
我正在考虑将秘密存储在区块链中。虽然有一些特定的区块链在处理它,但我想看看以太坊的可行性。
这个想法是将秘密存储为加密格式的状态变量,并且该变量值的可访问性仅限于某人。我的问题是,由于区块链是开放的,每个人都可以,如果有人真的很熟练,那么他/她可以读取每个变量的值。您认为,或者需要进一步做什么,才能使状态变量的值足够安全?
我正在尝试使用安全帽遵循此处找到的 Chainlink VRF 教程: https: //docs.chain.link/docs/intermediates-tutorial/,并在调用 rollDice 函数时遇到此问题:
Error: cannot estimate gas; transaction may fail or may require manual gas limit (error={"reason":"cannot estimate gas; transaction may fail or may require manual gas limit","code":"UNPREDICTABLE_GAS_LIMIT","method":"estimateGas","transaction":{"from":"0x014Da1D627E6ceB555975F09D26B048644382Ac6","maxPriorityFeePerGas":{"type":"BigNumber","hex":"0x9502f900"},"maxFeePerGas":{"type":"BigNumber","hex":"0x9502f90e"},"to":"0x5887946875A01D1BB79d6Fb357BceeA5A0096D2e","data":"0xdd02d9e5000000000000000000000000014da1d627e6ceb555975f09d26b048644382ac6","type":2,"accessList":null}}, tx={"data":"0xdd02d9e5000000000000000000000000014da1d627e6ceb555975f09d26b048644382ac6","to":{},"from":"0x014Da1D627E6ceB555975F09D26B048644382Ac6","type":2,"maxFeePerGas":{"type":"BigNumber","hex":"0x9502f90e"},"maxPriorityFeePerGas":{"type":"BigNumber","hex":"0x9502f900"},"nonce":{},"gasLimit":{},"chainId":{}}, code=UNPREDICTABLE_GAS_LIMIT, version=abstract-signer/5.5.0)
at Logger.makeError (/Users/matt/Desktop/hardhat/randomDay/node_modules/@ethersproject/logger/src.ts/index.ts:225:28)
at Logger.throwError (/Users/matt/Desktop/hardhat/randomDay/node_modules/@ethersproject/logger/src.ts/index.ts:237:20)
at /Users/matt/Desktop/hardhat/randomDay/node_modules/@ethersproject/abstract-signer/src.ts/index.ts:301:31
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Promise.all (index 7)
Run Code Online (Sandbox Code Playgroud)
我能够部署到 Kovan 测试网,我能够验证合约,并且我已经发送了合约 LINK 代币,但仍然遇到了问题。合约可以在这里查看:https://kovan.etherscan.io/address/0x7b72d80670512c87605ab8ac7e6113fda9c57de4#code
我正在使用 Chainlink 合约 0.8 版本。
随机日.sol
pragma solidity ^0.8.9;
import "@chainlink/contracts/src/v0.8/VRFConsumerBase.sol";
contract RandomDay is VRFConsumerBase {
uint256 private constant ROLL_IN_PROGRESS = …Run Code Online (Sandbox Code Playgroud) 在合同中,我有一个返回多个变量的函数。它返回 7 个变量,但我只需要其中的一个变量。怎样才能只取出必要的呢?我应该获取所有变量并只使用一个吗?
interface IData {
function getData() external view returns (unit d1,
string memory d2,
address d3,
unit d4,
string memory d5,
unit d6,
address d7);
}
contract Module {
IData private keepData;
constructor(address dataAddress) {
keepData = IData(dataAddress);
}
function doSomething() external {
unit d1;
string d2;
address d3;
unit d4;
string d5;
unit d6;
address d7;
(d1, d2, d3, d4, d5, d6, d7) = keepData.getData();
// do something which only requires d5 data.
// for other 6 …Run Code Online (Sandbox Code Playgroud) Etherium 2.0 和 NEAR 在很多方面似乎非常相似。有人可以详细说明两者之间有什么区别吗?
我正在学习 DApp 编程,出现的一个问题是 Metamask 和 web3.js 注入的 API 之间的区别。据我了解,MetaMask 注入一个有自己的 API 的对象,与 web3.js 库无关。它是否正确?我仍然可以将 web3.js 库与 MetaMask 一起使用吗?在后一种情况下,我该怎么办?如果有人能进一步解释这种差异,我将不胜感激。谢谢!
我在文档中找不到有关此表达式的任何信息。关于Ehternaut重入任务有以下代码。
function withdraw(uint _amount) public {
if(balances[msg.sender] >= _amount) {
(bool result,) = msg.sender.call{value:_amount}("");
if(result) {
_amount;
}
balances[msg.sender] -= _amount;
}
}
Run Code Online (Sandbox Code Playgroud)
这是什么_amount;意思?
我在 Solidity 0.6.6 中编写了一个简单的智能合约,并尝试将其部署到 BSC 测试网。
这就是我的 truffle-config.js 文件中的内容(privateKeys 是一个包含 ['0x + privatekey'] 单个条目的数组:
networks: {
bscTestnet: {
provider: () => new HDWalletProvider(
privateKeys,
'https://data-seed-prebsc-1-s1.binance.org:8545/'
),
network_id: 97,
skipDryRun: true
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行命令“truffle migrate --reset --network bscTestnet”时,出现以下错误:
Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.
Starting migrations...
======================
> Network name: 'bscTestnet'
> Network id: 97
> Block gas limit: 30000000 (0x1c9c380)
1_initial_migration.js
======================
Deploying 'Migrations'
----------------------
Error: *** Deployment Failed ***
"Migrations" …Run Code Online (Sandbox Code Playgroud) 为什么以下代码会因超过小数而返回小数部分错误?它似乎只在低平衡时触发。
如果我的余额是 0.1 以太币或 BNB,我不会看到错误,但如果我的余额是 0.0001,我会看到此错误
错误:小数部分超过小数
var account = accounts[0]
var yourBalance = await provider.getBalance(account)
var fixedBalance= ethers.FixedNumber.fromValue(yourbalance , 18);
var stakedAmount = (fixedBalance * 0.50).toString();
var finalOutput = ethers.utils.parseUnits(stakedAmount , 18); //this returns Error: fractional component exceeds decimals
Run Code Online (Sandbox Code Playgroud) blockchain ×10
ethereum ×6
solidity ×4
javascript ×2
bsc ×1
cardano ×1
chainlink ×1
erc20 ×1
ethers.js ×1
go-ethereum ×1
metamask ×1
near ×1
nearprotocol ×1
npm ×1
privacy ×1
return ×1
security ×1
truffle ×1
web3js ×1