标签: solidity

如何使用脚本设置环境变量 [Node.js]

如何使用node.js中的脚本设置环境变量?

我有一个脚本为我提供了部署的 Solidity 合约地址,我必须在我的 .env 文件中使用它(我正在使用 dotenv 模块)。

我尝试找出方法来更新或添加新生成的合约值到 .env 文件中,但没有得到太多结果。

有什么办法可以更新或添加我从脚本获得的值到 .env 文件吗?

javascript node.js solidity

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

如何在PHP中添加智能合约功能?

我正在做一个主题为“销售”的项目。所以,对于前端(React)和后端(PHP)。

我在理解如何在项目中使用我的智能合约时遇到了问题。为了部署,我使用以太坊钱包 0.9.0 和测试网络 Rinkeby。他在 EW 工作。

假设我的代码中有购买按钮,并且我的合约中有如下功能:

function Buy() 
    public 
    payable 
{
    require (msg.sender != seller);
    require (msg.value >= price);
    orderNum++;
    safePay +=msg.value;
}
Run Code Online (Sandbox Code Playgroud)

现在,我该如何使用它?我听说过 web3.js,但是(我不确定)我需要 php 请求。

或者,如果我的合约部署在以太坊钱包 Rinkeby 中,我可以直接通过代码使用它,不需要再次部署。

我是这个主题的初学者,可能会犯错误(即使在视图中),但如果有人可以解释这一点,我会非常高兴。

谢谢。

php blockchain ethereum solidity web3js

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

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
查看次数

如何在不使用设置 msg.value 的情况下将资金从 msg.sender(amount) 转移到收件人地址

我们可以将资金从地址(此)转移到收件人。但是有没有什么方法可以将资金直接从 msg.sender 钱包转移到收件人呢?我无法在调用 payoutBonus 调用时设置 msg.value。因为我只能在 payoutBonus 方法中获得金额。

function payoutBonus(address recipient) public payable returns (bool) {
    // bonus = calculateBonus();
    //transfer this bonus to recipient from msg.sender;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

ethereum solidity

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

类型合约活动不能隐式转换为预期类型地址

在尝试创建和存储新创建的 Solidity 合约的地址时:

address newCampaign = new Campaign();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Type contract Campaign is not implicitly convertible to expected type address
Run Code Online (Sandbox Code Playgroud)

solidity remix

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

如何使用 ERC721 将 NFT 从一个帐户转移到另一个帐户?

我正在使用 OpenZeppelin ERC721Full 合约编写 NFT 智能合约。我可以铸造 NFT,但我想要一个可以购买它们的按钮。我正在尝试编写此功能:

function buyNFT(uint _id) public payable{
    //Get NFT owner address
    address payable _seller = ownerOf(_id);

    // aprove nft sell
    approve(_seller, _id);
    setApprovalForAll(msg.sender, true);

    //transfer NFT
    transferFrom(_seller, msg.sender, _id);

    // transfer price in ETH
    address(_seller).transfer(msg.value);

    emit NftBought(_seller, msg.sender, msg.value);

  }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为功能批准必须由所有者或已批准的地址调用。我不知道应该如何构建购买功能。我知道我必须使用一些需求,但首先我希望该功能可以用于测试,然后我将编写需求。

购买功能应该如何编码?因为我找到的唯一解决方案是覆盖批准函数并省略谁可以调用此函数的要求。但看起来这不是应该的方式。

谢谢!

ethereum solidity smartcontracts nft

0
推荐指数
2
解决办法
1490
查看次数

“未提供 SPDX 许可证标识符”警告 - 这是什么意思?

警告:源文件中未提供 SPDX 许可证标识符。在发布之前,请考虑向每个源文件添加包含“SPDX-License-Identifier:”的注释。对于非开源代码,请使用“SPDX-License-Identifier:UNLICENSED”。请参阅https://spdx.org了解更多信息。

solidity

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

不检索价值简单彩票以太坊合约管理器方法

我正在用 React 构建一个简单的应用程序,但是var manager = wait lottery.methods.manager().call(); 永远不会检索值,我怎么会错呢?

彩票.js

import web3 from './web3';

const address = '0x430b45dcf781d58e73CeeA288b4196B6ddeE4d7E';

const abi = [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"enter","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getPlayers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pickWinner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"players","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"random","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}];
const cont = new web3.eth.Contract(abi,address);
export default cont;
Run Code Online (Sandbox Code Playgroud)

应用程序.js

import React,{Component} from 'react';
import logo from './logo.svg';
import './App.css';
import web3 from './web3';
import lottery from './lottery';

class App extends Component {
  
  constructor (props){
    super(props);
    this.state = {"manager":''};
  }

  async componentDidMount(){
    console.log("componentDidMount fired");
    var manager = await lottery.methods.manager().call();//never set  manager var
    this.setState({manager});
  }

  render() {
    return (
      <div> …
Run Code Online (Sandbox Code Playgroud)

reactjs ethereum solidity

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

错误:事务已恢复:函数调用无法执行

我目前在一个 nft 市场工作,希望对每笔销售收取 2.5% 的费用。我已经在线阅读和研究了如何计算坚固性百分比,并在这方面取得了成功,但问题是结果是一个巨大的数字,即 2.5 * 150/100 应该返回 3.75 但我得到这个数字: 3750000000000000000000000000000000000

我的测试

const auctionPrice = ethers.utils.parseUnits("1", "ether");

const [_, userAddress] = await ethers.getSigners();
    let fee = (2.5 * auctionPrice) / 100;
    const commission = ethers.utils.parseUnits(fee.toString(), "ether");
    let commissionValue = commission.toString();

    console.log(commission.toString());
    console.log(fee);

    await market
      .connect(userAddress)
      .createMarketSale(nftContractAddress, 1, commissionValue, {
        value: auctionPrice,
      });
Run Code Online (Sandbox Code Playgroud)

结果

250000000000000000000000000000000

 1 failing

  1) NFTMarket
       Should create and execute market sales:
     Error: Transaction reverted: function call failed to execute
      at NFTMarket.createMarketSale (contracts/NFTMarket.sol:165)
      at processTicksAndRejections (node:internal/process/task_queues:96:5)
      at …
Run Code Online (Sandbox Code Playgroud)

solidity nft hardhat

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

坚固度小数值

我需要输入用户可以支付的最小值,该值必须是例如 0.5 BNB。但我不知道该怎么做。

    uint comissionFee = 5; // 5 will represent 0,5
    uint256 minimunPay = comissionFee*100/1000;
Run Code Online (Sandbox Code Playgroud)

但返回0

  pragma solidity ^0.8.4;

  function payFees() public payable {
    require(msg.value >= 0.5); // <-- not compatible with uint256
    (bool success,) = owner.call{value: msg.value}("");
    require(success, "Failed to send money");
  }
Run Code Online (Sandbox Code Playgroud)

solidity smartcontracts

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