Умножение и деление со стоимостью контракта - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь вставить условие if в следующий контракт, чтобы проверить, меньше ли сумма отзыва (это образец банковского контракта), чем 10% от общей стоимости контракта, т. Е. От всего банка. Когда я вставляю код, как показано ниже, он дает мне такую ​​ошибку, как "UnimplementedFeatureError: еще не реализовано - FixedPointType."

Что я делаю не так? Вы можете мне помочь? Большое спасибо заранее !!

pragma solidity ^0.4.24;

contract bank{
mapping (address => uint) private balance;
address public Owner;

function WithDrawMoreMoney(uint a) public{
    require (balance[msg.sender]>=0);
    require (address(this).balance>=0);
    require ((a) =< (address (this).balance)*(uint(1.1)));    // The problematic line
    balance[msg.sender]-=a;
    (msg.sender).transfer(a);

1 Ответ

1 голос
/ 05 мая 2019

проверить, если вывод ... меньше [10%] от общей стоимости [контракта]

Я думаю, вы просто хотите это:

require(a <= address(this).balance / 10);

Ваш код умножился на 1,1, когда я думаю, что вы имели в виду 0,1, но в любом случае Солидность имеет только целые числа. Разделение на 10 работ. У вас также была опечатка: =< вместо <=.

Если вы хотите проверить какой-то другой процент, например, 23%:

require(a <= address(this).balance * 23 / 100);

Обязательно сначала выполните умножение, и всегда не забывайте защищать от целочисленных переполнений.

...