Bitcoin Forum
June 26, 2024, 06:21:31 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: [DEV]HelpCoin монета спасающая жизни!  (Read 1589 times)
babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
July 22, 2017, 07:03:19 PM
Last edit: August 10, 2017, 09:23:20 PM by babiypetr
 #1

Доброго времени суток Уважаемые. Пробелы в знаниях завели в тупик( нужна помощь зала))

Допустим есть токен созданный на базе смарт контракта эфириума, этот самый контракт через переменную totalSupply получает количество монет которое будет создано этим контрактом, после деплоя контракта мы сможем через https://etherscan.io/tokens найти этот контракт, увидеть количество монет, и можем найти кто их сейчас держит и транзакции по передаче их, вроди бы все хорошо, но есть ли в виртуальной машине эфириума инструмент позволяющий отследить отдельную единицу этой массы  totalSupply?

Интересуюсь с целью сохранения статичных данных каждой монеты (дата выпуска, суммы привлеченные ею внутри ДАО и некоторые другие), возможно ли это? Или все таки эти монеты не более чем цифры внутри контракта?

Этот функционал нужен в рамках реализации проекта https://bitcointalk.org/index.php?topic=2034120.0

Наш GitLab: https://gitlab.babiy.pro/HelpCoin/Ethereum
Наш Redmine: https://redmine.babiy.pro/projects/dao-helpcoin

ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
July 24, 2017, 06:24:22 AM
 #2

Эта информация должна записана быть в смартконтракте. Есть стандарт смартконтрактов ERC20 и в нем такой возможности нет. Если Вы хотите сделать что то похожее, то можно сделать функцию которая эмитирует монеты(естественно Вы должны передавать дополнительную информацию в смарт контракт) и эти монеты получают какой то ид\symbol и теперь чтобы кому то перевести нужно указать сартконтракту ид количество и кому. Думаю такое возможно но это не ERC20 и с добавлением на биржы будут проблемы, так как для бирж это отдельные токены
babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
July 24, 2017, 06:48:12 AM
Last edit: July 24, 2017, 07:17:50 AM by babiypetr
 #3

Эта информация должна записана быть в смартконтракте. Есть стандарт смартконтрактов ERC20 и в нем такой возможности нет. Если Вы хотите сделать что то похожее, то можно сделать функцию которая эмитирует монеты(естественно Вы должны передавать дополнительную информацию в смарт контракт) и эти монеты получают какой то ид\symbol и теперь чтобы кому то перевести нужно указать сартконтракту ид количество и кому. Думаю такое возможно но это не ERC20 и с добавлением на биржы будут проблемы, так как для бирж это отдельные токены

Да, Вы правы протокол ERC20 этого не поддерживает и в его обсуждениях на гитхабе тема эта поднималась, я задал подобный вопрос в обсуждении протокола ERC223, но увы и там они утверждают что снабдить каждую монету идентификатором будет очень дорого(( Хотя не сомненно такая возможность была бы весьма и весьма популярна, так как позволила бы выстраивать логику не только с контрактами но и с отдельными монетами...

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

babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
July 24, 2017, 07:30:28 AM
Last edit: July 24, 2017, 08:35:52 AM by babiypetr
 #4

Хотя по сути то задача действительно тривиальная (если конечно создаваемые монета не просто цифры в контракте):

1) Для всех генерируемых токенов в эфириуме вносится timestamp
2) В протокол ERC223 к функции transfer добавляется ещё один не обязательный аргумент bites _ident
3) Если кто то хочет использовать этот механизм он добавляет в функцию этот аргумент и тогда:
4) По событию event Transfer мы получаем в данных о транзакции данные о монетах в ней учавствовавших в виде примерно такого массива:

timestamp -> 1
timestamp -> 1
timestamp -> 0,5

и все более нам от системы ничего не нужно, далее мы используя эти данные уже строим логику внутри своего приложения...

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

babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
July 25, 2017, 05:40:27 AM
 #5

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

Quote
можно сделать функцию которая эмитирует монеты(естественно Вы должны передавать дополнительную информацию в смарт контракт) и эти монеты получают какой то ид\symbol и теперь чтобы кому то перевести нужно указать сартконтракту ид количество и кому.

Немного не так, монеты будут передаваться не зависимо от их идентификатора, самым обычным способом согласно протокола ERC20\ERC223 , идентификаторы монет участвующих в транзакции (отчисления 3% коммиссии) мы соберем в процессе и уже согласно этого разобьем суммы на части и отправим их первому владельцу монеты. То есть для пользования монетой идентификатор пассивен и выбирать какие монеты переводить не нужно.  

P.S. Поправьте если я снова ошибаюсь.

ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
July 25, 2017, 08:59:10 AM
 #6

Да, можно и так. Просто зачем Вам вообще история монет? Что с ней можно сделать хорошего или где ее можно использовать?
babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
July 25, 2017, 09:21:17 AM
Last edit: July 25, 2017, 09:51:42 AM by babiypetr
 #7

Да, можно и так. Просто зачем Вам вообще история монет? Что с ней можно сделать хорошего или где ее можно использовать?

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

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

P.S. не заметил, что в данном топике не давал ссылку на проект , для которого собственно это все и делается, обновил первый пост добавив ссылку.

P.S.S. конечно же привлечь к этому делу профессионалов было бы куда продуктивнее, но спрос на них настолько велик, что их крайне сложно привлечь , особенно учитывая то , что проект не обещает привычных в данной отрасли "барышей" , вот поэтому и приходится на начальном этапе вникать в технические детали самостоятельно.. Благо есть опыт программирования в PHP .

babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
August 07, 2017, 07:21:38 PM
 #8

Ребят, у меня снова кризис знаний( в голове все перемешалось... Киньте плиз ссылкой на пример или примерно черканите фрагмент кода, как все же добавить к токену timestamp ?

Quote
function MyAdvancedToken(
        uint256 initialSupply,
        string tokenName,
        uint8 decimalUnits,
        string tokenSymbol,
        uint256 ident = now
    ) token (initialSupply, tokenName, decimalUnits, tokenSymbol) {}

Это же не сработает? или это в функции генерации токенов добавляется?

imhoneer
Legendary
*
Offline Offline

Activity: 2604
Merit: 1516



View Profile
August 08, 2017, 10:45:45 AM
 #9

Я вам предлагаю более простой вариант. Вот ролик https://www.youtube.com/watch?v=sPCPacV2JNU как сделать лотерею на контрактах эфира со своими токенами. Там все подробно показано и рассказано. Вам вообще не недо будет заморачиваться.

Поэтому на базе этой схемы делаем следующую.

Вы выпускаете обычные токены в количестве 1,000,000 штук, выставляете цену для покупки в эфирах.

После этого вместо лотерейных билетов, выпускаете памятные токены с ценой 10 ваших обычных токенов за один памятный, количество памятных токенов устанавливается на 100,000 штук.

Обратите внимание, что в его примере контракта при покупке лотереи, есть массив с именем address, там и прописываете address[100000], начинается объяснение про него на 5мин10сек.

Этот массив и запоминает адреса всех покупателей.



         ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▄      
        █  █▀▀▀▀▀▀▀█  █        
       ▄▀▀▀▀▄     ▄▀▀▀▀▄      
▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄
█ ▄▀▀▀▀▀▀▀▀▀ ▄▄▄▄▄ ▀▀▀▀▀▀▀▀▀▀ █
█ ▀        ▄▀ ▄ ▄ ▀▄          █
█▄▄▄      █   █▀█   █      ▄▄▄█
 █  ▀▀▀▄▄▄█   █▀▀▄  █▄▄▄▀▀▀  █
 █        █   █▄▄█  █        █
 █         ▀▄ ▀ ▀ ▄▀         █
 █           ▀▀▀▀▀         █ █
 █ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀ █
 ▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀
    ▀▀                   ▀▀  



Arbitrum Balance
/



             ▄▄████▄▄
         ▄▄████████████▄▄
      ▄██████████ █████████▄
█▀█▄▄▄███████████ █▀█▀██████
▀▀▀         ▀████      ▀████
▀▀▀▀▀▀▀▀█▀▀▄    █ ████  ████
     ▄▄▄ ▀▄ ▀▀▀▀█        ███
     █▄█   ▀▀▀▀▀█ █████  ███
▄▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█       ▄██
   ▄▄▄     ▄█████ █▄█▄████
   █▄█▀▀▀▀███████ ██████▀
            ▀████████▀▀
              ▀▀██▀▀

           


imhoneer investment fund
/


   ▄▄███████████████▄▄
 ▄█████████████████████▄
▄██████████████▀▀███████▄
████████████▀▀    ███████
█████████▀▀   ▄   ███████
██████▀▀     █    ███████
████▀       █     ███████
█████▄▄   ▄█      ███████
████████ ██▄      ███████
▀████████ ▀▄███▄▄███████▀
 ▀█████████████████████▀
   ▀▀███████████████▀▀


Telegram-канал @imho_idea
babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
August 08, 2017, 01:01:23 PM
 #10

Вы как всегда на высоте! Спасибо большое, если не ошибаюсь то то что я увидел - это то что я искал.

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

imhoneer
Legendary
*
Offline Offline

Activity: 2604
Merit: 1516



View Profile
August 08, 2017, 02:12:06 PM
 #11

Вы как всегда на высоте! Спасибо большое, если не ошибаюсь то то что я увидел - это то что я искал.

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

Рад, что помог. В таком случае зайдите на аккаунт данного видеоблогера и посмотрите остальные видео. Он в них очень подробно всё объясняет.



         ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▄      
        █  █▀▀▀▀▀▀▀█  █        
       ▄▀▀▀▀▄     ▄▀▀▀▀▄      
▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄
█ ▄▀▀▀▀▀▀▀▀▀ ▄▄▄▄▄ ▀▀▀▀▀▀▀▀▀▀ █
█ ▀        ▄▀ ▄ ▄ ▀▄          █
█▄▄▄      █   █▀█   █      ▄▄▄█
 █  ▀▀▀▄▄▄█   █▀▀▄  █▄▄▄▀▀▀  █
 █        █   █▄▄█  █        █
 █         ▀▄ ▀ ▀ ▄▀         █
 █           ▀▀▀▀▀         █ █
 █ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀ █
 ▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀
    ▀▀                   ▀▀  



Arbitrum Balance
/



             ▄▄████▄▄
         ▄▄████████████▄▄
      ▄██████████ █████████▄
█▀█▄▄▄███████████ █▀█▀██████
▀▀▀         ▀████      ▀████
▀▀▀▀▀▀▀▀█▀▀▄    █ ████  ████
     ▄▄▄ ▀▄ ▀▀▀▀█        ███
     █▄█   ▀▀▀▀▀█ █████  ███
▄▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█       ▄██
   ▄▄▄     ▄█████ █▄█▄████
   █▄█▀▀▀▀███████ ██████▀
            ▀████████▀▀
              ▀▀██▀▀

           


imhoneer investment fund
/


   ▄▄███████████████▄▄
 ▄█████████████████████▄
▄██████████████▀▀███████▄
████████████▀▀    ███████
█████████▀▀   ▄   ███████
██████▀▀     █    ███████
████▀       █     ███████
█████▄▄   ▄█      ███████
████████ ██▄      ███████
▀████████ ▀▄███▄▄███████▀
 ▀█████████████████████▀
   ▀▀███████████████▀▀


Telegram-канал @imho_idea
babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
August 09, 2017, 08:25:55 AM
 #12

Неожиданностью стало, что контракт генерирует токены исходя из decimalUnits , то есть если там стоит 18 , то при указании в initialSupply 1 000 000 мы не получаем миллион токенов, которые будут дробится а получаем 0.000000000001000000 токенов))  Я все верно понял так и должно быть? И на биржах в результате торгуется минимальная единичка? Или может быть альтернатива которая создаст токен по типу того же ETH ?

ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
August 09, 2017, 09:58:36 AM
 #13

initial supply идет в минимальных единицах, для эфира это gwei, что соотвествует 10^-18 эфира.

На биржах торгуются целые токены, а не минимальная единица.

Чтобы Вам правильно рассчитать initial supply

initial supply = [кол-во токенов] * 10^[кол-во знаков после запятой]
babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
August 09, 2017, 10:15:20 AM
 #14

initial supply идет в минимальных единицах, для эфира это gwei, что соотвествует 10^-18 эфира.

На биржах торгуются целые токены, а не минимальная единица.

Чтобы Вам правильно рассчитать initial supply

initial supply = [кол-во токенов] * 10^[кол-во знаков после запятой]

Спасибо большое, скажите а на практике сколько знаков после запятой достаточно? Что то 18 мне кажется перебор, вероятно есть какая то оптимальная цифра, понятно что она должна ориентироваться на ожидаемый курс монеты, но все же

ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
August 10, 2017, 10:04:39 AM
 #15

Для токенов в основном ставят 8 знаков. Есть меньше есть больше, но думаю этого достаточно для любых целей.
babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
August 10, 2017, 10:08:52 AM
 #16

Для токенов в основном ставят 8 знаков. Есть меньше есть больше, но думаю этого достаточно для любых целей.

Спасибо большое, так и сделаю. Скажите пожалуйста, кто либо использует для разработки Eclipse с плагином UML to Solidity ? Мне сам Eclipse нравится, но вот что то нормально с Solidity подружить у меня что то не очень выходит(

ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
August 10, 2017, 10:13:51 AM
 #17

Я рекомендую пользоваться truffleframework, это не среда разработки а библиотека. А среда может быть любая.
babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
August 10, 2017, 09:21:12 PM
Last edit: August 10, 2017, 09:35:30 PM by babiypetr
 #18

В общем то отказался я от Eclipse, так и не победив его, систему разработки сделал так:

1) Sublime Text 3 + Solidity Plugin + Git Plugin - это локальный редактор
2) GitLab + Redmine - управление проектом и версиями
3) Truffle + Git + Geth - тестовая платформа

Сейчас пуш с Sublime Text обновляет файлы на GitLab а сервер с truffle в автомате подтягивает закомиченные изменения.

Решил посвятить эту ветку разработке своего проекта, поэтому и я надеюсь она когда то кому то будет полезна.
Чуть позже сделаю блог посвященный разработке и серверному окружению, так как по серверному окружению у меня есть чем поделится, я для своих проектов использую отказоустойчивый VDS кластер собранный в Public Cloud от OVH , довольно надежная штука получается.

Наш GitLab: https://gitlab.babiy.pro/HelpCoin/Ethereum
Наш Redmine: https://redmine.babiy.pro/projects/dao-helpcoin

Так же как и в основной ветке, приглашаю к участию в проекте разработчиков.

babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
August 11, 2017, 12:22:05 PM
 #19

Оцените пожалуйста структуру проекта, не уверен, что поступил правильно, но решил сделать так:

1) Сущности сгруппировал по смыслу (отдельная директория для группы)
2) В каждой группе есть контроллер (контракт с суффиксом DAO)
3) Все контракты группы работают исключительно через свой контроллер
4) Контроллеры всех групп работают исключительно через контроллер ядра

Как думаете, не перестарался? на PHP я бы поступил именно так а тут вот не знаю насколько это оправданно 

babiypetr (OP)
Full Member
***
Offline Offline

Activity: 322
Merit: 102


View Profile WWW
August 14, 2017, 12:26:56 PM
 #20

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

Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!