- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个去中心化应用程序来购买音乐会门票。出于某种原因,部分 owner.transfer(this.balance) 一直给我错误。此外,由于 solidity 的版本太多,我找不到最适合我的版本。请帮助我。谢谢
错误信息
Getting error as Member “balance” not found or not visible after argument-dependent lookup. Use address(this).balance to access address owner.transfer(this.balance)
Solidity 代码
pragma solidity 0.6.6;
contract Event {
address owner;
uint public tickets;
string public description;
string public website;
uint constant price = 0.01 ether;
mapping (address => uint) public purchasers;
constructor(uint t, string memory _description, string memory _webstite) public {
owner = msg.sender;
description = _description;
website = _webstite;
tickets = t;
}
// function () payable {
// buyTickets(1);
// }
function buyTickets(uint amount) public payable {
if (msg.value != (amount * price) || amount > tickets) {
revert();
}
purchasers[msg.sender] += amount;
tickets -= amount;
if (tickets == 0) {
owner.transfer(this.balance);
}
}
function refund(uint numTickets) public {
if (purchasers[msg.sender] < numTickets) {
revert();
}
msg.sender.transfer(numTickets * price);
purchasers[msg.sender] -= numTickets;
tickets += numTickets;
}
}
在我将其更改为 owner.transfer(address(this).balance);
后,它给了我另一个错误。
[vm] from: 0x5b3...eddc4to: Event.buyTickets(uint256) 0xd91...39138value: 0 weidata: 0x2f3...00001logs: 0hash: 0x030...bbdf1
status 0x0 Transaction mined but execution failed
transaction hash 0x03045aab3f5d40ebeef4eacedf50ce506edfc2b75c279652839fd74f8e9bbdf1
from 0x5b38da6a701c568545dcfcb03fcb875f56beddc4
to Event.buyTickets(uint256) 0xd9145cce52d386f254917e481eb44e9943f39138
gas 3000000 gas
transaction cost 21760 gas
execution cost 296 gas
hash 0x03045aab3f5d40ebeef4eacedf50ce506edfc2b75c279652839fd74f8e9bbdf1
input 0x2f3...00001
decoded input { "uint256 amount": { "_hex": "0x01" } }
decoded output {}
logs []
value 0 wei
transact to Event.buyTickets errored: VM error: revert. revert The transaction has been reverted to the initial state. Note: The called function should be payable if you send value and the value you send should be less than your current balance. Debug the transaction to get more information.
最佳答案
转账仅限支付地址。尝试如下。
address payable owner;
...
owner.transfer(address(this).balance);
关于blockchain - 坚固性 : Getting error as Member “balance” not found or not visible after argument-dependent lookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64711324/
在 IBM 生产的“Coffee with Blockchain”应用程序中,它在种植者和买家之间进行价格匹配。我想知道如何实现匹配(在示例应用程序中或在实际实现中)。 可以在此处查看应用程序示例:h
我目前正在学习创建自己的智能合约平台,似乎有两种不同类型的智能合约;安装和链上合约。在我看来,安装很容易实现,但我没有掌握链上合约。 我相信对于 Ethereum 和 Hyperledger,合约都在
我正在寻找关于“去中心化” 和“分布式” 这两个术语的学术答案。我现在的想法是,去中心化系统(如区 block 链)没有单点控制,而在分布式系统中我们可以从网络的单点控制整个系统。 最佳答案 区 bl
我确信这可以在前端和 solidity 中完成。我看到一些看起来效率低下的帖子,根据我的理解,当 ERC721 包已经具有获取这些信息所需的功能时,他们正在创建一个新的映射并将不必要的数据存储到区 b
我只是想检查一下我的理解。 在比特币平台中,矿工做以下事情:- 验证每个未确认的交易。- 将它们分组- 散列 block 并找到随机数(工作量证明) 现在,在以太坊平台上,谁是未成年人?智能合约中调用
我已经发现许多提供多重签名智能合约部署的钱包。但是这种方式非常昂贵和缓慢,因为它需要大量的交易。我认为还有另一种方法。例如,我们可以创建许多私钥,用它们签署交易,然后将结果组合成一个最终交易。这样的方
您好,我正在使用 Geth,我尝试使用 truffle migrate,但它会出错。truffle-config.js 如下: development: { host: "127.0.0.1",
我在 TRON 网络中部署合约时遇到问题,我需要以 4.. 开头的格式指定地址,或者当我收到交易历史记录时(这里的 api 也以 4.. 地址响应)。 因此我有一个问题: 如何将以TLAXtqju7G
我想给一个特定的私钥一个账户名,然后注册到Near blockchain,怎么办? 最佳答案 您可以使用 near-shell 来做到这一点通过提供 --publicKey 选项。 near crea
嗨,我正在使用 Substrate-FRAME 开发运行时,我想知道如何为我的运行时编写系统测试? 编写系统测试的主要目的是确保最终构建满足所有必需的规范,并确保运行时升级不会受到任何影响。 对我来说
我正在尝试使契约(Contract)具有能够调用另一个契约(Contract)的功能的功能。我的目标的关键部分是,如果没有任何 import 语句,合约应该无法部署,并且默认情况下不会知道合约的名称。
使用 node.js 客户端,我试图通过以下方式调用智能合约功能: 创建交易 签名 广播签署的交易 我部署了一个简单的智能合约: pragma solidity ^0.4.25; contract T
我正在以太坊区块链上试验智能合约。假设我有一个契约(Contract),比如 SimpleStorage.sol 找到 in the Solidity documentation ,具有任何人都可以访
我已经创建了一个私有(private)以太坊网络并想探索监控。我在一个终端窗口中启动了一个 geth 实例。我尝试运行 geth monitor --attach/path/to/geth.ipc 并
如何在基板运行时对浮点值进行数学运算。举个简单的例子,假设我想跟踪去中心化金融中的利率。 我可以通过将百分比用作整数来制作原型(prototype) let rate = 2; let dividen
嗨,我是区 block 链主题的新手,我正在尝试制作以太坊智能合约。第一步我安装了松露,当我尝试迁移它时会抛出一个错误,因为我没有以太坊客户端。 为了解决这个问题松露开发,推荐ganache,geth
我希望我的智能合约返回 7 或 8 唯一 调用合约时从 1 到 100 的随机数。获得这种结果的最佳方法是什么? 最佳答案 可能如果您尝试使用以太坊区 block 链构建轮盘赌、彩票和纸牌游戏,因为以
我想从链代码的 Invoke() 方法中调用另一个链代码。推荐的方法是什么?我想我可以在/chaincode 上使用标准 REST API 并通过其 ID 引用它(由部署操作返回),但是是否有“系统”
我一直在使用 solidity和 truffle几天来制定契约(Contract)。我正在使用 Ganache 创建的网络进行测试,这是一个 RPC 客户端,用于构建本地区 block 链环境。 不过
我正在尝试查询我在本地区 block 链安装中部署的链代码示例 02。 我已经按照 hyperledger-fabric 文档中的描述尝试了内部和外部 vagrant 设置。 chaincode go
我是一名优秀的程序员,十分优秀!