Bitcoin Forum
June 21, 2024, 04:23:28 PM *
News: Voting for pizza day contest
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 »
201  Local / Идеи / Re: Оплата криптовалютой в интернет магазин&# on: September 08, 2017, 02:01:25 PM
Ни что ни мешает фиксировать курс к фиатной валюте продавца на момент покупки, по налогам магазин отчитается так как он получил не крипту а обычную валюту своей страны. Волотильность курса крипты ляжет на плечи агрегатора, он должен сам страховаться от этих вещей и это не должно касаться ни продавца ни покупателя. Налоговая отчетность агрегатора это тоже его головная боль, главное что он должен сделать, это доказать своё законное существование как продавцу так и покупателю. А идея хорошая, потому что придвигает крипту ближе к людям, а это именно то, что сейчас очень нужно криптовалютному рынку, именно возможность использования крипты в повседневной жизни , делает её ликвидной.
202  Local / Идеи / Re: Фонд помощи нуждающимся. on: September 08, 2017, 01:40:46 PM
Quote
Всегда когда речь заходит о благотворительности, вспоминаю цитату: "благими намерениями вымощена дорога в ад"

Очень разнится отношение к благотворительности на постсоветском пространстве и за его пределами.... Вероятно первопричина этому - менталитет людей, очень хочется надеяться, что это пройдет, и благие намерения перестанут быть "адской дорогой"... Именно поэтому я и написал, что заниматься благотворительностью нужно, не смотря ни на что...   
203  Local / Идеи / Re: Премия Сатоши Накомото on: September 08, 2017, 01:11:11 PM
Мысль интересная, но не даром же Сатоши Накомото - человек легенда, ни кто его не знает, но многие хотели бы познакомится, особенно сецслужбы многих стран)). Вы не думали, что значимые для отрасли люди могут не спешить официально светится на подобных распиаренных мероприятиях?  Ведь людям сделавшим в криптомире состояние, всегда найдется что предъявить у госорганов, как минимум "уход от уплаты налогов". Мне кажется, что такая премия должна быть, но проведение церемонии её вручения не должно быть стандартным, это должно быть нечто новое и инновационное.
204  Local / Идеи / Re: Фонд помощи нуждающимся. on: September 08, 2017, 12:58:13 PM
Заниматься благотворительностью нужно не смотря не на что, и криптовалюта для этого очень хороша, особенно сейчас. Я как раз работаю над таким проектом (ссылка в подписи) , если настроены серьезно, то можем пообщаться в личке. Собирать средства без создания юридического лица или ДАО в котором бы деньги были защищены от нецелевого использования, думаю не получится, проект Tryble (если не спутал название) это доказал, сборы под благотворительные мысли , были провалены. И да, главное, сейчас рынок криптовалют носит спекулятивный характер, пожертвования давать будут, но это будет не много, поэтому даже в благотворительном направлении думайте над мотивацией к пожертвованиям.
205  Local / Идеи / Re: Привлечение инвестиций on: September 08, 2017, 12:30:53 PM
Крипта сейчас очень волотильна, брать кредит в ней опасно для кредитуемого, так как отдавать придется в той же крипте , которая за это время может значительно подрасти в цене, кредитовать без привязки к крипте, врядли кто то захочет по той же причине, зачем актив давать под минимальные проценты , если он способен принести гараздо больше при меньших рисках? Мой Вам совет, ищите займы в банках, здесь пока рано.
206  Local / Альтернативные криптовалюты / Re: HelpCoin монета спасающая жизни! on: August 31, 2017, 09:54:27 AM
Quote
смотрю у вас все хорошо продвигается, давайте заканчивайте будем пользоваться)))

Спасибо, продвигается конечно, не так хорошо как хотелось бы, всё таки без команды тяжело, но ничего, медленно но уверенно движемся вперед, и надеюсь с появлением первых денег нам удастся собрать команду, и тогда шаги станут более энергичными Smiley
207  Local / Идеи / Re: Криптовалютный благотворительный фонд. on: August 31, 2017, 09:46:34 AM
У меня похожая задумка, но у вас нет мотивации зачем людям эта монета? просто благотворительность не всем интересна. Какая выгода инвесторам  кроме духовной?
Я думаю, что есть очень много людей бескорыстных. И ребята молодцы. Удачи им.

Спасибо за слова поддержки, этот проект уже начал приобретать очертания, подробности в топике (ссылка в подписи). Мы уже зарегистрировали фонд, и сейчас занимаемся разработкой контрактов ДАО. Очень жаль конечно, что не получилось найти единомышленников готовых присоединится к проекту на столь раннем этапе и поработать на перспективу, но благо, что имеется личный опыт программирования и он сейчас очень пригодился, конечно же в одиночку реализовывать все задуманное достаточно сложно, но надеюсь, что после первого этапа предварительных продаж токена, у меня появятся возможности собрать команду с которой мы продолжим этот не легкий путь.
208  Local / Альтернативные криптовалюты / Re: HelpCoin монета спасающая жизни! on: August 29, 2017, 05:09:02 PM
Монета для медбрата? Как собираетесь спасать жизни?

Это был сарказм?) Ну тогда он не к чему, жизни собираемся спасать , оплачивая медицинские услуги клиникам, которые и будут заниматься спасением жизни человека. Альтернатив на данный период времени увы не существует.

К слову, первый и единственный (поправьте если это не так) не только в Украине, но и в мире! Международный Крипто-валютный Благотворительный Фонд - успешно зарегистрирован: http://joxi.ru/5mdWKD3IkLvB0r

Сейчас готовим первую редакцию сайта, где будут опубликованы все документы. Примерно на вторую половину сентября, планируется старт первого этапа предварительных продаж токена. Более точная и подробная информация будет опубликована позже.
209  Alternate cryptocurrencies / Altcoin Discussion / Re: [Idea] HelpCoin - Coin saving lives! on: August 25, 2017, 07:22:06 AM
Hello, Thank's for your comment!

Quote
how we can buy idea token ?

We are preparing for the first stage of pre-sale, please subscribe to this topic, I will announce the date of the beginning of the pre-sale of HelpCoin tokens.
210  Local / Юристы / Re: ДАО и законодательство Украины. on: August 24, 2017, 02:14:13 PM
При всех опасениях , Фонд успешно зарегистрирован: http://joxi.ru/5mdWKD3IkLvB0r Ищется на сайте https://usr.minjust.gov.ua/ua/freesearch по идентификационному коду юридического лица 41542124

Документы на руки пока не получил, но последний вариант устава здесь  

Регистрацией занимается  компания ВИКТОРИЯ ЮРБИЗНЕС ГРУПП

Если не ошибаюсь, то именно крипто-валютный благотворительный фонд первый не только в Украине но и в мире) Речь именно о юридическом лице.

Теперь осталось реализовать приложение, собрать денежки и начать помогать людям.
211  Alternate cryptocurrencies / Altcoin Discussion / Re: [Idea] HelpCoin - Coin saving lives! on: August 21, 2017, 09:32:00 AM
As shown by testing, some of the helpcoin functions are obtained by a very expensive gas, We had to give them up (.

But the main motivator, 20% cacheback - has remained and it is very good

I'm updating first message, that would be relevant information.
212  Local / Альтернативные криптовалюты / Re: HelpCoin монета спасающая жизни! on: August 21, 2017, 05:11:53 AM
Все же разбилась часть идеи о камни особенностей платформы, gas эфириума поставил крест на части функционала монеты, не сможем мы хранить историю монеты и давать ей дополнительное имя, но мы сохранили память о первом владельце и пожизненный кешбек, правда несколько в другом виде, но главное что итог будет один, первый владелец будет вознаграждаться не смотря на все трудности)

Первый пост обновил.
213  Local / Кодеры / Re: [DEV]HelpCoin монета спасающая жизни! on: August 21, 2017, 04:51:15 AM
И вот , недели изучения Solidity дали свои результаты - этих результата два, первый идентификатор к каждой монете добавить можно и второй - это неимоверно дорого(( . Но я распишу как добавлял его , возможно это кому то пригодится:
Code:
contract HelpCoin is StandardToken {

    string  public _standard = "ERC20";

    string  public _name = "HelpCoin";

    string  public _symbol = "HLP";

    uint8   public _decimail = 8;

    

    struct HLP {

      address FirstOwner;

      bytes32 CoinName;

      uint Date;

      uint Rating;

    }  

Структура данных HLP как раз призвана держать в себе данные о каждой монете
Code:
 

    address public ComissionAccount;

    mapping (address => mapping (uint256 => HLP)) public identificators;
Этот mapping как раз и сохраняет за каждым адресом (по аналогии с балансом) монеты вместе с их историей и прочими уникальными прелестями в таком формате : identificators[адрес][ид монеты - это ключ второй карты].FirstOwner|.CoinName|.Date|.Rating и по аналогии с тем же балансом нам нужно при трансфере токенов перемещать часть монет из адреса на адрес
Code:
      

    function HelpCoin( uint256 _initialSupply ) StandardToken(_initialSupply,_standard,_name,_symbol,_decimail) {

        setIds(_initialSupply,msg.sender,msg.sender,"preANN");

    }

    

    function setIds(uint256 total, address owner, address firstowner, bytes32 hlpname){

      uint256 timestamp = now;

        for (uint256 i = 0; i < total; i++ ) {

          identificators[owner][i] = HLP(firstowner,hlpname,timestamp,0);

        }

    }

Для теста я добавил функцию setIds которая заполняет эту карту данных при инициализации контракта, и при total = 100 (а у нас на минуточку 8 нолей после запятой, то есть 100  это капля в море) я получил "Out of gas" а вот при total = 10 все отработало как нужно. И думаю что причина тут не в цикле при помощи которого мы добавляем идентификатор и данные а именно в стоимости самого хранения такого количества информации в блокчейне...

Такой идентификатор можно использовать но только с монетой, которая не делима и имеет очень малую эмиссию , но в моем варианте использование такого идентификатора не рационально, поправьте если я ошибаюсь, но я не вижу других вариантов хранения этих данных.

Итог прост, от уникальности монеты придется отказаться, не будет она иметь истории и имени, но вот первого владельца все же вознаграждать будет, мы будем хранить адрес первого владельца и количество токенов которое он взял а так же временную метку когда он последний раз получал кешбек. 20% от хождения монеты будут аккумулироваться на отдельном контракте и раз в месяц мы будем распределять собранные там токены между первыми владельцами пропорционально количеству токенов ими приобретенными .
214  Alternate cryptocurrencies / Altcoin Discussion / Re: [Idea] HelpCoin - Coin saving lives! on: August 19, 2017, 01:12:19 PM
I like this idea, it has some problems but I like it.

If you're not confident you can code this yourself, maybe you should do a pre ITO, creating waves tokens (easy as fucK) and ask for a certain amount of funding that will be used for the development of the smartcontract on Eth. If people like you're idea, you'll get the funding to realize the smart contract and then just give the pre ITO funders the same amount of HelthCoin as the amount of your waves tokens in their wallet.


Thank 's for your comment. This problem I'm fixed. I have programming experience, but not on Solidity and on PHP and on the initial stage I try to sort things out myself. But the pre-sale phase will be, I plan it after registering the fund, I want to give more guarantees to the first investors.
215  Local / Кодеры / Re: [DEV]HelpCoin монета спасающая жизни! on: August 19, 2017, 12:35:17 PM
Как всегда невнимательность и забывчивость сыграли со мною злую шутку( я совсем забыл про файл 2_helpcoin_migration.js
Code:
var HelpCoin =  artifacts.require("./HelpCoin.sol");

var initialSupply = 1000;
module.exports = function(deployer) {
deployer.deploy(HelpCoin,initialSupply);
};

В котором собственно и была указана эта злосчастная переменная с тысячей на борту, что собственно и ввело меня в заблуждение(((
Я исправил код:
Code:
var HelpCoin =  artifacts.require("./HelpCoin.sol");

var initialSupply = 1000*(10**8);
module.exports = function(deployer) {
deployer.deploy(HelpCoin,initialSupply);
};

А так же из теста убрал лишнее:
Code:
var HelpCoin = artifacts.require("HelpCoin");

contract('HelpCoin', function(accounts) {
    var hlp;

it("Deploy contract", function(done) {
HelpCoin.deployed().then(function(instance){
hlp = instance;
assert.isOk(hlp);
message = "Deployed address :" + hlp.address;
console.log(message);
done();
})
})
it("Перевод токенов с отчислением коммиссии", function(done){
var main_acc = accounts[0];
var target_acc = accounts[1];
var commiss_acc = accounts[2];

var main_bal_s;
var main_bal_e;
var target_bal_s;
var target_bal_e;
var commiss_bal_s;
var commiss_bal_e;

var ammount;
var commiss;

var message;

hlp.setCommissionAccount(commiss_acc).then(function(){
            return hlp.balanceOf.call(main_acc);
}).then(function(bal){
main_bal_s = bal.toNumber();
            message = "Start balance main account: " + main_bal_s + " HLP";
            console.log(message);
            return hlp.balanceOf.call(target_acc);
}).then(function(bal){
target_bal_s = bal.toNumber();
message = "Start balance target account: " + target_bal_s + " HLP";
console.log(message);
return hlp.balanceOf.call(commiss_acc);
}).then(function(bal){
commiss_bal_s = bal.toNumber();
message = "Start balance commiss account: " + commiss_bal_s + " HLP";
console.log(message);
ammount = 1000000000;
message = "Transfer " + ammount + " HLP with 3% commission";
console.log(message);
return hlp.transfer(target_acc,ammount);
}).then(function(res){
message = "GasUsed for this transaction: " + res.receipt.gasUsed;
console.log(message);
return hlp.balanceOf.call(commiss_acc);
}).then(function(bal){
            commiss_bal_e = bal.toNumber();
            commiss = bal.toNumber();
            message = "The commssion comprised: " + commiss + " HLP";
            console.log(message);
return hlp.balanceOf.call(main_acc);
}).then(function(bal){
main_bal_e = bal.toNumber();
message = "End balance main account: " + main_bal_e + " HLP";
console.log(message);
return hlp.balanceOf.call(target_acc);
}).then(function(bal){
target_bal_e = bal.toNumber();
message = "End balance target account: " + target_bal_e + " HLP";
console.log(message);
message = "End balance commiss account: " + commiss_bal_e + " HLP";
console.log(message);

assert.equal(main_bal_e,main_bal_s - ammount,"Токены не переведены с главного аккаунта");
assert.equal(target_bal_e,target_bal_s + ammount - commiss,"Токены не переведены на принмающий аккаунт");
assert.equal(commiss_bal_e,target_bal_s + commiss,"Коммиссия не переведена");
done();
})
})
})

И ура, теперь тест отработал так как и ожидалось:
Code:
root@helpcoin:/home/projects/HelpCoin/Testing# truffle test
Using network 'development'.

Compiling ./contracts/HelpCoin.sol...
Compiling ./contracts/SafeMath.sol...


  Contract: HelpCoin
Deployed address :0x9df17d35f384184057e8813252eb88a7e16128f3
    ✓ Deploy contract
Start balance main account: 100000000000 HLP
Start balance target account: 0 HLP
Start balance commiss account: 0 HLP
Transfer 1000000000 HLP with 3% commission
GasUsed for this transaction: 73967
The commssion comprised: 30000000 HLP
End balance main account: 99000000000 HLP
End balance target account: 970000000 HLP
End balance commiss account: 30000000 HLP
    ✓ Перевод токенов с отчислением коммиссии (313ms)


  2 passing (351ms)

root@helpcoin:/home/projects/HelpCoin/Testing#

Тест показывает что контракты все же работают с минимальными единицами, что в принципе снимает проблемы с вычислением процентов комиссии

Будьте внимательны, возможно мой опыт кому то пригодится и Вы сбережете время, которое я потратил на поиски решения по сути не существующей проблемы.
216  Alternate cryptocurrencies / Altcoin Discussion / Re: [dev]HelpCoin need your help. on: August 19, 2017, 12:27:48 PM
I'm so sorry! I'm stupid men)) I forgot about the file 2_helpcoin_migration.js

Code:
var HelpCoin =  artifacts.require("./HelpCoin.sol");

var initialSupply = 1000;
module.exports = function(deployer) {
deployer.deploy(HelpCoin,initialSupply);
};
In it the variable InitialSupple, And then what was in the test, respectively, did not work, and I always had 1000 HLP (

I'm fix this:
Code:
var HelpCoin =  artifacts.require("./HelpCoin.sol");

var initialSupply = 1000*(10**8);
module.exports = function(deployer) {
deployer.deploy(HelpCoin,initialSupply);
};

And test code:
Code:
var HelpCoin = artifacts.require("HelpCoin");

contract('HelpCoin', function(accounts) {
    var hlp;

it("Deploy contract", function(done) {
HelpCoin.deployed().then(function(instance){
hlp = instance;
assert.isOk(hlp);
message = "Deployed address :" + hlp.address;
console.log(message);
done();
})
})
it("Перевод токенов с отчислением коммиссии", function(done){
var main_acc = accounts[0];
var target_acc = accounts[1];
var commiss_acc = accounts[2];

var main_bal_s;
var main_bal_e;
var target_bal_s;
var target_bal_e;
var commiss_bal_s;
var commiss_bal_e;

var ammount;
var commiss;

var message;

hlp.setCommissionAccount(commiss_acc).then(function(){
            return hlp.balanceOf.call(main_acc);
}).then(function(bal){
main_bal_s = bal.toNumber();
            message = "Start balance main account: " + main_bal_s + " HLP";
            console.log(message);
            return hlp.balanceOf.call(target_acc);
}).then(function(bal){
target_bal_s = bal.toNumber();
message = "Start balance target account: " + target_bal_s + " HLP";
console.log(message);
return hlp.balanceOf.call(commiss_acc);
}).then(function(bal){
commiss_bal_s = bal.toNumber();
message = "Start balance commiss account: " + commiss_bal_s + " HLP";
console.log(message);
ammount = 1000000000;
message = "Transfer " + ammount + " HLP with 3% commission";
console.log(message);
return hlp.transfer(target_acc,ammount);
}).then(function(res){
message = "GasUsed for this transaction: " + res.receipt.gasUsed;
console.log(message);
return hlp.balanceOf.call(commiss_acc);
}).then(function(bal){
            commiss_bal_e = bal.toNumber();
            commiss = bal.toNumber();
            message = "The commssion comprised: " + commiss + " HLP";
            console.log(message);
return hlp.balanceOf.call(main_acc);
}).then(function(bal){
main_bal_e = bal.toNumber();
message = "End balance main account: " + main_bal_e + " HLP";
console.log(message);
return hlp.balanceOf.call(target_acc);
}).then(function(bal){
target_bal_e = bal.toNumber();
message = "End balance target account: " + target_bal_e + " HLP";
console.log(message);
message = "End balance commiss account: " + commiss_bal_e + " HLP";
console.log(message);

assert.equal(main_bal_e,main_bal_s - ammount,"Токены не переведены с главного аккаунта");
assert.equal(target_bal_e,target_bal_s + ammount - commiss,"Токены не переведены на принмающий аккаунт");
assert.equal(commiss_bal_e,target_bal_s + commiss,"Коммиссия не переведена");
done();
})
})
})
Result test:
Code:
root@helpcoin:/home/projects/HelpCoin/Testing# truffle test
Using network 'development'.

Compiling ./contracts/HelpCoin.sol...
Compiling ./contracts/SafeMath.sol...


  Contract: HelpCoin
Deployed address :0x9df17d35f384184057e8813252eb88a7e16128f3
    ✓ Deploy contract
Start balance main account: 100000000000 HLP
Start balance target account: 0 HLP
Start balance commiss account: 0 HLP
Transfer 1000000000 HLP with 3% commission
GasUsed for this transaction: 73967
The commssion comprised: 30000000 HLP
End balance main account: 99000000000 HLP
End balance target account: 970000000 HLP
End balance commiss account: 30000000 HLP
    ✓ Перевод токенов с отчислением коммиссии (313ms)


  2 passing (351ms)

root@helpcoin:/home/projects/HelpCoin/Testing#

Now everything works as it should. Maybe someone will help this information.
217  Alternate cryptocurrencies / Altcoin Discussion / Re: [dev]HelpCoin need your help. on: August 19, 2017, 10:01:01 AM
Sorry man , I am not a tech guy, I think you can get help  at this board Project Development.

Thank's , I originally there and posted this topic, but moderator moved it here (
218  Alternate cryptocurrencies / Altcoin Discussion / Re: [Idea] HelpCoin - Coin saving lives! on: August 19, 2017, 09:31:18 AM
I need help developers, Please look this topic: https://bitcointalk.org/index.php?topic=2091978.msg21007985#msg21007985

++++++++++++++++++++++++++++
If any of the readers of the topic have a free penny, then please help the project, for us now every penny is very important.

Donate BTC: 1BPRdmCGkyaDH3U1MLr5VT8uivWgBJRjM
Donate ETH: 0x8B160d397499D8c1cb776F3246815C25a05Bb816


Thanks you!
++++++++++++++++++++++++++++
219  Alternate cryptocurrencies / Altcoin Discussion / Re: [dev]HelpCoin need your help. on: August 19, 2017, 09:29:03 AM
I'm testing contract and I need your help!
This is code of contract:
Code:
pragma solidity ^0.4.11;

import "./SafeMath.sol";

/**
 * IssueID 8
 */

contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) constant returns (uint256);
  function transfer(address to, uint256 value) returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint256);
  function transferFrom(address from, address to, uint256 value) returns (bool);
  function approve(address spender, uint256 value) returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) returns (bool) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) constant returns (uint256 balance) {
    return balances[_owner];
  }

}
contract StandardToken is ERC20, BasicToken {
   
    string public standard;
    string public name;
    string public symbol;
    uint8  public decimals;
    uint256 public totalSupply;

   
   
  function StandardToken( uint256 initialSupply, string _standard, string _name, string _symbol, uint8 _decimals ){
        totalSupply = initialSupply;
        standard = _standard;
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        balances[msg.sender] = initialSupply;
      }

  mapping (address => mapping (address => uint256)) allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // require (_value <= _allowance);

    balances[_to] = balances[_to].add(_value);
    balances[_from] = balances[_from].sub(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) returns (bool) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require((_value == 0) || (allowed[msg.sender][_spender] == 0));

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifing the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

}

contract HelpCoin is StandardToken {

    string  public _standard = "ERC20";
    string  public _name = "HelpCoin";
    string  public _symbol = "HLP";
    uint8   public _decimail = 8;
    uint256 public _initialSupply;
    uint256[] public _id;
    address[] public FirstOwner;
 
    address public ComissionAccount;

    event Commission(address indexed _to, uint256[] _id);
    event Debug(uint256 value);
    //event CalculateOut(uint256 amount);
     
    function HelpCoin( uint256 _initialSupply ) StandardToken(_initialSupply,_standard,_name,_symbol,_decimail){}
   
   
    function mintToken(address target, uint256 mintedAmount) {
//        setFirstOwner(target);
        balances[target] = balances[target].add(mintedAmount);
        totalSupply = totalSupply.add(mintedAmount);
        Transfer(0, this, mintedAmount);
        Transfer(this, target, mintedAmount);
    }

    function transfer(address _to, uint256 _value) returns (bool) {
        if (balances[msg.sender] < _value) { return false; }
        uint256 comiss = _value.div(100).mul(3);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[ComissionAccount] = balances[ComissionAccount].add(comiss);
        balances[_to] = balances[_to].add(_value.sub(comiss));
        Transfer(msg.sender, _to, _value);
        Commission(ComissionAccount, _id);
        return true;
    }

    function setCommissionAccount(address _CommissionAccount) {
      ComissionAccount = _CommissionAccount;
    }

   
//   function setFirstOwner(address target) {
//        FirstOwner = target;
//    }

}

Testing transfer function, it must deduct 3% comission in other account (contract).
This is code of function:
Code:
function transfer(address _to, uint256 _value) returns (bool) {
        if (balances[msg.sender] < _value) { return false; }
        uint256 comiss = _value.div(100).mul(3);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[ComissionAccount] = balances[ComissionAccount].add(comiss);
        balances[_to] = balances[_to].add(_value.sub(comiss));
        Transfer(msg.sender, _to, _value);
        Commission(ComissionAccount, _id);
        return true;
    }

This is js test , which I'm testing:
Code:
var HelpCoin = artifacts.require("HelpCoin");

contract('HelpCoin', function(accounts) {
    var hlp;

it("Deploy contract", function(done) {
var totalSupple = 100000000000;

HelpCoin.deployed(totalSupple).then(function(instance){
hlp = instance;
assert.isOk(hlp);
message = "Deployed address :" + hlp.address;
console.log(message);
done();
})
})
it("Перевод токенов с отчислением коммиссии", function(done){
var main_acc = accounts[0];
var target_acc = accounts[1];
var commiss_acc = accounts[2];

var main_bal_s;
var main_bal_e;
var target_bal_s;
var target_bal_e;
var commiss_bal_s;
var commiss_bal_e;

var ammount;
var commiss;

var message;

hlp.setCommissionAccount(commiss_acc).then(function(){
            return hlp.balanceOf.call(main_acc);
}).then(function(bal){
main_bal_s = bal.toNumber();
            message = "Start balance main account: " + main_bal_s + " HLP";
            console.log(message);
            return hlp.balanceOf.call(target_acc);
}).then(function(bal){
target_bal_s = bal.toNumber();
message = "Start balance target account: " + target_bal_s + " HLP";
console.log(message);
return hlp.balanceOf.call(commiss_acc);
}).then(function(bal){
commiss_bal_s = bal.toNumber();
message = "Start balance commiss account: " + commiss_bal_s + " HLP";
console.log(message);
ammount = 100;
message = "Transfer " + ammount + " HLP with 3% commission";
console.log(message);
return hlp.transfer(target_acc,ammount);
}).then(function(res){
message = "GasUsed for this transaction: " + res.receipt.gasUsed;
console.log(message);
return hlp.balanceOf.call(commiss_acc);
}).then(function(bal){
            commiss_bal_e = bal.toNumber();
            commiss = bal.toNumber();
            message = "The commssion comprised: " + commiss + " HLP";
            console.log(message);
return hlp.balanceOf.call(main_acc);
}).then(function(bal){
main_bal_e = bal.toNumber();
message = "End balance main account: " + main_bal_e + " HLP";
console.log(message);
return hlp.balanceOf.call(target_acc);
}).then(function(bal){
target_bal_e = bal.toNumber();
message = "End balance target account: " + target_bal_e + " HLP";
console.log(message);
message = "End balance commiss account: " + commiss_bal_e + " HLP";
console.log(message);

assert.equal(main_bal_e,main_bal_s - ammount,"Токены не переведены с главного аккаунта");
assert.equal(target_bal_e,target_bal_s + ammount - commiss,"Токены не переведены на принмающий аккаунт");
assert.equal(commiss_bal_e,target_bal_s + commiss,"Коммиссия не переведена");
done();
})
})
})

According to the test, we initialize 1000 HLPs (100000000000 in the unit units) and place them on the main account, and then transfer 100 HLP, the test result:
Code:
root@helpcoin:/home/projects/HelpCoin/Testing# truffle test
Using network 'development'.

Compiling ./contracts/HelpCoin.sol...
Compiling ./contracts/SafeMath.sol...


  Contract: HelpCoin
Deployed address :0x1b92206f541de5b49a4e7914b0f4454d5ad78078
    ✓ Deploy contract
Start balance main account: 1000 HLP
Start balance target account: 0 HLP
Start balance commiss account: 0 HLP
Transfer 100 HLP with 3% commission
GasUsed for this transaction: 73839
The commssion comprised: 3 HLP
End balance main account: 900 HLP
End balance target account: 97 HLP
End balance commiss account: 3 HLP
    ✓ Перевод токенов с отчислением коммиссии (330ms)


  2 passing (371ms)

root@helpcoin:/home/projects/HelpCoin/Testing#

As you can see, everything worked as it should, and judging from the test, the function does not work with minimal units, as 100 HLP moved, but if we reduce the number of tokens transferred to 10, we get a problem:
Code:
root@helpcoin:/home/projects/HelpCoin/Testing# truffle test
Using network 'development'.

Compiling ./contracts/HelpCoin.sol...
Compiling ./contracts/SafeMath.sol...


  Contract: HelpCoin
Deployed address :0xdb1934157218b2d927135261d72346d17d64c7af
    ✓ Deploy contract
Start balance main account: 1000 HLP
Start balance target account: 0 HLP
Start balance commiss account: 0 HLP
Transfer 10 HLP with 3% commission
GasUsed for this transaction: 58797
The commssion comprised: 0 HLP
End balance main account: 990 HLP
End balance target account: 10 HLP
End balance commiss account: 0 HLP
    ✓ Перевод токенов с отчислением коммиссии (353ms)


  2 passing (388ms)

root@helpcoin:/home/projects/HelpCoin/Testing#

As we can see, the transfer of tokens was successful, but the commission was not calculated because of the fact that in HLP it is (0.3 HLP) and in fact we can take it away as we have 8 zeros in our token, but rummaged all the documentation and that and did not understand how Do you want to do this? Can not see the obvious ... Please help me!
220  Local / Кодеры / Re: [DEV]HelpCoin монета спасающая жизни! on: August 19, 2017, 08:59:37 AM
Тестирую контракт нужна помощь, вот сам контракт:

Code:
pragma solidity ^0.4.11;

import "./SafeMath.sol";

/**
 * IssueID 8
 */

contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) constant returns (uint256);
  function transfer(address to, uint256 value) returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint256);
  function transferFrom(address from, address to, uint256 value) returns (bool);
  function approve(address spender, uint256 value) returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) returns (bool) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) constant returns (uint256 balance) {
    return balances[_owner];
  }

}
contract StandardToken is ERC20, BasicToken {
    
    string public standard;
    string public name;
    string public symbol;
    uint8  public decimals;
    uint256 public totalSupply;

    
    
  function StandardToken( uint256 initialSupply, string _standard, string _name, string _symbol, uint8 _decimals ){
        totalSupply = initialSupply;
        standard = _standard;
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        balances[msg.sender] = initialSupply;
      }

  mapping (address => mapping (address => uint256)) allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // require (_value <= _allowance);

    balances[_to] = balances[_to].add(_value);
    balances[_from] = balances[_from].sub(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) returns (bool) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require((_value == 0) || (allowed[msg.sender][_spender] == 0));

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifing the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

}

contract HelpCoin is StandardToken {

    string  public _standard = "ERC20";
    string  public _name = "HelpCoin";
    string  public _symbol = "HLP";
    uint8   public _decimail = 8;
    uint256 public _initialSupply;
    uint256[] public _id;
    address[] public FirstOwner;
 
    address public ComissionAccount;

    event Commission(address indexed _to, uint256[] _id);
    event Debug(uint256 value);
    //event CalculateOut(uint256 amount);
      
    function HelpCoin( uint256 _initialSupply ) StandardToken(_initialSupply,_standard,_name,_symbol,_decimail){}
    
    
    function mintToken(address target, uint256 mintedAmount) {
//        setFirstOwner(target);
        balances[target] = balances[target].add(mintedAmount);
        totalSupply = totalSupply.add(mintedAmount);
        Transfer(0, this, mintedAmount);
        Transfer(this, target, mintedAmount);
    }

    function transfer(address _to, uint256 _value) returns (bool) {
        if (balances[msg.sender] < _value) { return false; }
        uint256 comiss = _value.div(100).mul(3);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[ComissionAccount] = balances[ComissionAccount].add(comiss);
        balances[_to] = balances[_to].add(_value.sub(comiss));
        Transfer(msg.sender, _to, _value);
        Commission(ComissionAccount, _id);
        return true;
    }

    function setCommissionAccount(address _CommissionAccount) {
      ComissionAccount = _CommissionAccount;
    }

    
//   function setFirstOwner(address target) {
//        FirstOwner = target;
//    }

}

Тестируется в частности функция transfer ,  она должна отчислять при переводе 3% на отдельный счет (контракт):
Code:
function transfer(address _to, uint256 _value) returns (bool) {
        if (balances[msg.sender] < _value) { return false; }
        uint256 comiss = _value.div(100).mul(3);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[ComissionAccount] = balances[ComissionAccount].add(comiss);
        balances[_to] = balances[_to].add(_value.sub(comiss));
        Transfer(msg.sender, _to, _value);
        Commission(ComissionAccount, _id);
        return true;
    }

Вот тест которым я это дело тестирую:
Code:
var HelpCoin = artifacts.require("HelpCoin");

contract('HelpCoin', function(accounts) {
    var hlp;

it("Deploy contract", function(done) {
var totalSupple = 100000000000;

HelpCoin.deployed(totalSupple).then(function(instance){
hlp = instance;
assert.isOk(hlp);
message = "Deployed address :" + hlp.address;
console.log(message);
done();
})
})
it("Перевод токенов с отчислением коммиссии", function(done){
var main_acc = accounts[0];
var target_acc = accounts[1];
var commiss_acc = accounts[2];

var main_bal_s;
var main_bal_e;
var target_bal_s;
var target_bal_e;
var commiss_bal_s;
var commiss_bal_e;

var ammount;
var commiss;

var message;

hlp.setCommissionAccount(commiss_acc).then(function(){
            return hlp.balanceOf.call(main_acc);
}).then(function(bal){
main_bal_s = bal.toNumber();
            message = "Start balance main account: " + main_bal_s + " HLP";
            console.log(message);
            return hlp.balanceOf.call(target_acc);
}).then(function(bal){
target_bal_s = bal.toNumber();
message = "Start balance target account: " + target_bal_s + " HLP";
console.log(message);
return hlp.balanceOf.call(commiss_acc);
}).then(function(bal){
commiss_bal_s = bal.toNumber();
message = "Start balance commiss account: " + commiss_bal_s + " HLP";
console.log(message);
ammount = 100;
message = "Transfer " + ammount + " HLP with 3% commission";
console.log(message);
return hlp.transfer(target_acc,ammount);
}).then(function(res){
message = "GasUsed for this transaction: " + res.receipt.gasUsed;
console.log(message);
return hlp.balanceOf.call(commiss_acc);
}).then(function(bal){
            commiss_bal_e = bal.toNumber();
            commiss = bal.toNumber();
            message = "The commssion comprised: " + commiss + " HLP";
            console.log(message);
return hlp.balanceOf.call(main_acc);
}).then(function(bal){
main_bal_e = bal.toNumber();
message = "End balance main account: " + main_bal_e + " HLP";
console.log(message);
return hlp.balanceOf.call(target_acc);
}).then(function(bal){
target_bal_e = bal.toNumber();
message = "End balance target account: " + target_bal_e + " HLP";
console.log(message);
message = "End balance commiss account: " + commiss_bal_e + " HLP";
console.log(message);

assert.equal(main_bal_e,main_bal_s - ammount,"Токены не переведены с главного аккаунта");
assert.equal(target_bal_e,target_bal_s + ammount - commiss,"Токены не переведены на принмающий аккаунт");
assert.equal(commiss_bal_e,target_bal_s + commiss,"Коммиссия не переведена");
done();
})
})
})

Согласно теста мы инициализируем 1000 HLP (100000000000 в минмальных единицах) и размещаем их на главном аккаунте, а потом переводим 100 HLP , результат теста:
Code:
root@helpcoin:/home/projects/HelpCoin/Testing# truffle test
Using network 'development'.

Compiling ./contracts/HelpCoin.sol...
Compiling ./contracts/SafeMath.sol...


  Contract: HelpCoin
Deployed address :0x1b92206f541de5b49a4e7914b0f4454d5ad78078
    ✓ Deploy contract
Start balance main account: 1000 HLP
Start balance target account: 0 HLP
Start balance commiss account: 0 HLP
Transfer 100 HLP with 3% commission
GasUsed for this transaction: 73839
The commssion comprised: 3 HLP
End balance main account: 900 HLP
End balance target account: 97 HLP
End balance commiss account: 3 HLP
    ✓ Перевод токенов с отчислением коммиссии (330ms)


  2 passing (371ms)

root@helpcoin:/home/projects/HelpCoin/Testing#

Как видно все отработало как надо, и судя из теста функция работает не с минимальными единицами, та как переместилось 100 HLP, но вот если мы уменьшим пересылаемое количество токенов до 10 то получаем проблему:
Code:
root@helpcoin:/home/projects/HelpCoin/Testing# truffle test
Using network 'development'.

Compiling ./contracts/HelpCoin.sol...
Compiling ./contracts/SafeMath.sol...


  Contract: HelpCoin
Deployed address :0xdb1934157218b2d927135261d72346d17d64c7af
    ✓ Deploy contract
Start balance main account: 1000 HLP
Start balance target account: 0 HLP
Start balance commiss account: 0 HLP
Transfer 10 HLP with 3% commission
GasUsed for this transaction: 58797
The commssion comprised: 0 HLP
End balance main account: 990 HLP
End balance target account: 10 HLP
End balance commiss account: 0 HLP
    ✓ Перевод токенов с отчислением коммиссии (353ms)


  2 passing (388ms)

root@helpcoin:/home/projects/HelpCoin/Testing#

Как видим трансфер токенов прошел успешно, но комиссия не расчиталась из-за того что в HLP она составляет (0.3 HLP) и по сути мы можем её отнять та как имеем 8 нулей в нашем токене, но перерыл всю документацию и та и не понял как же это сделать? Может очевидного не вижу... Помогите пожалуйста
Pages: « 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!