Здравия всем. Вопросы от новичка. Я программист, но криптой никогда не инересовался. Теперь вот есть задача разобраться. Вот есть у нас некий сервис, в котором пользователи что-то делают и получают за это вознаграждение. Когдато позже они смогут за эти же токены сами приобретать услуги сервиса. Не знаю какая от этого выгода - но "надо". В сети куча примеров как "выпустить токены за 5 минут", но там везде нам должны перевести ETH, а мы в ответ даем токены.. А тут надо чтоб мы токены отдавали "прсто так" (ну, т.е. по собственной инициативе). Начинаются вопросы. 1. Кошельки для ETH и для токенов чем-то отличаются? (Если нет, то как понять что на них хранится - еth или токены.. или и то и другое) 2. Можем ли мы вообще раздавать токены "просто так"? 3. Куда вообще мы их должны будем раздавать? Мы должны будем сами создать пользователю кошелёк и туда начислять? 4. Хотят чтоб был типа веб-кошелёк - зашел на наш сайт - и имееш доступ к кошельку. Так понимаю, у нас на сервере будет нода, на которой будут храниться все кошельки пользователей? (нами созданные и назначенные пользователям) Вот без блокчейна я бы это спокойно реализовал. А тут. Вопросы пока сумбурные, я в общем и целом понял как это всё рабоатет, но в деталях ещё нет.
1- кошельки это интерфейс, так на любом адресе ты можешь и токены хранить, и эфир. 2-Транзакции небесплатные(стоят обычное несколько центов, все зависит от загрузки сети и сколько ты сам газа выставляешь), чтобы делать транзакцию нужно оплатить комсу, поэтому на адресе откуда отсылаешь должно быть немного эфира. 3- юзер сам должен создать себе кошель, тк кто создает кошель, тот владеет приватным ключем. 4- зашел на сайт может, отображаться баланс юзера, но доступа не будет, либо вам нужно свой кошель под эфир разработать.
Вообще то что вы делаете это Airdrop, в любом случае юзер должен будет сделать САМ кошель на эфире, дать вам адрес, вы ему туда токены переведете.
так то вообще необязательно чтобы пользователь создавал сам кошелек или заводил свой кошелек на ваш ресурс. Каждому пользователю можно присвоить рандомный кошелек созданный системой, для начисления "фантиков", ну а если уж клиент захочет вывести токены, то пожалуйста, скрипт на вывод и уже токены на кошельке. Таким способом можно избежать мелкие транзакции (за которые ВЫ бы платили). Ну либо как предложили выше. Для начала все делается на тестовой сети (ropsten.etherscan.io), контракт свой заливаете и балуетесь с транзакциями и ищите возможные ошибки. p.s это мой взгляд на ситуацию.
Благодарю. Про Airdrop не понял.. Это яблочный файлообменник или типа того.. У нас сервис имеет мобильных клиентов, впринципе, кошелёк может быть сделан там наверное. Я правильно понимаю, что у клиента будет храниться только его приватный ключ? Сам блокчейн ему хранить не надо же? (не видел еще телефонов с терабайтом памяти). "Каждому пользователю можно присвоить рандомный кошелек созданный системой" - это, так понимаю, тот случай, про который я упоминал - всё хранится у нас, включая их ключи. Т.е. пользователи нам как бы доверяют при этом. Так? А у нас в обоих случаях полная нода должна быть. Так? Как же мне всё-таки отличать что в хошельке хранится? Токены или эфир? ("литературу" бы какую, доходчивую подскажите?)
a4j сказал(а): ↑ Благодарю. Про Airdrop не понял.. Это яблочный файлообменник или типа того.. У нас сервис имеет мобильных клиентов, впринципе, кошелёк может быть сделан там наверное. Я правильно понимаю, что у клиента будет храниться только его приватный ключ? Сам блокчейн ему хранить не надо же? (не видел еще телефонов с терабайтом памяти). "Каждому пользователю можно присвоить рандомный кошелек созданный системой" - это, так понимаю, тот случай, про который я упоминал - всё хранится у нас, включая их ключи. Т.е. пользователи нам как бы доверяют при этом. Так? А у нас в обоих случаях полная нода должна быть. Так? Как же мне всё-таки отличать что в хошельке хранится? Токены или эфир? ("литературу" бы какую, доходчивую подскажите?)Нажмите, чтобы раскрыть... Документации полно же, и как отправить токены и как определить баланс, и переслать токены от клиента А клиенту В. Для go -> https://goethereumbook.org/smart-contract-read-erc20/ для python -> https://web3py.readthedocs.io/ для js -> https://web3js.readthedocs.io/
fdsms сказал(а): ↑ Документации полно же, и как отправить токены и как определить баланс, и переслать токены от клиента А клиенту В.Нажмите, чтобы раскрыть... Благодарю. Кое что я к этому времени тоже нашел. Правдя я начал работать напрямую с GETH через HTTP RPC интрфейс. У меня серверная часть на РНР, библиотеки готовой не нашёл. Но из того API что мне удалось найти, там много не хватает, ну или я не разобрался как тем что есть сделать то что мне надо.. Начал с простейшего конечно, например, я смог создать акаунт (но не нашёл куда он ключ сложил), получить баланс.. А переслать эфир с акаунта на акаунт не смог.. Ну и ничего не нашел по поводу токенов, или как контракт загрузить.. А компиляцию geth не делает? (в найденном мною апи была функция "eth_compileSolidity", но мой geth мне сказал что такой функции в нём нет..)
Дополнение.. Я вот полистал указанную документацию на Web3.py... (https://web3py.readthedocs.io/en/stable/web3.personal.html) Так понимаю, функции которые в ней описаны, должны существовть же в geth ? Например eth.getBlock('latest') нормально отрабатывает.. а вот, например, метод (просто, случано выбрал из примера в документации) eth.getUncleByBlock(56160, 0) У меня говорит > eth.getUncleByBlock(56160, 0); TypeError: 'getUncleByBlock' is not a function at <anonymous>:1:1 У меня какой-то левый geth? Такое возможно? ( geth-linux-amd64-1.8.17-8bbe7207.tar.gz )
Для того чтобы переслать эфир нужен приват кей. Без него у Вас ничего не выйдет. Вот пример как отправить эфир и токены эфира, думаю ничего сложного, если нужно могу закоментить. p.s я использую поставщика infura (https://infura.io/docs/) w3 = Web3(HTTPProvider('https://mainnet.infura.io/v3/*******')) там так же нет getUncleByBlock, но есть eth_getUncleByBlockNumberAndIndex.
fdsms сказал(а): ↑ Для того чтобы переслать эфир нужен приват кей. Без него у Вас ничего не выйдет. ... там так же нет getUncleByBlock, но есть eth_getUncleByBlockNumberAndIndex.Нажмите, чтобы раскрыть... А вот где его взять, этот ключ? В каком-то мануале находил, дескать, ключ будет гдето в папке .ethereum - там из похожего только пустая папка keystore.. Куда вот он эти ключи девает?... getUncleByBlock, да, это похоже был вызов для библиотеки web3.. там, да, указано что это метод апи eth_getUncleByBlockNumberAndIndex, но! у меня почмуто-такие вот результаты: > eth.getUncleByBlockNumberAndIndex undefined > eth.getUncleByBlockNumberAndIndex() TypeError: 'getUncleByBlockNumberAndIndex' is not a function at <anonymous>:1:1 т.е. все равно такого мы не знаем.... как так? По передаче токенов я нашел пару примеров типа этого: https://ethereum.stackexchange.com/questions/24828/how-to-send-erc20-token-using-web3-api Впринципе вроде аналогичен вашему примеру, но отличается.. буду разбираться что зачем.. Контракт предварительно я же должен скомпилировать.. Чем можно воспользоваться? (Remix? везде он упоминается) Сам geth неумеет? Впринципе, для моей текущей задачи, худо-бедно начин проясняться.. Создать акаунт получается, сделать контракт для выдачи токенов вроде тоже уже представляю как.. Ка кпередать токену тоже вот примеры вырисовываются... Пока больше врод еи не надо ничего.. А, ну балланс токенов показывать.. (нашёл вот это https://medium.com/@piyopiyo/how-to-get-erc20-token-balance-with-web3-js-206df52f2561 но ничего пока непонял). В плане контракта для выдачи токенов, я правильно понимаю, что вот эти примеры выше, они перводят токены с моего акаунта на другой.. Но для этого же токены сперва должны как-то образоваться на моем акаунте?. Для этого в конструкторе контракта я должен их себе назначить все.. а потом transfer() вызывать.. Так же? А могу я не загружать токены себе сразу, а "выписывать" их сразу на указнный адрес, указанное количество по мере необходимости? И является ли какой-товариант предпочтительнее, или это как мне удобнее?
Подскажите пожалуйста, я с траст валет перевёл эфир на метамаск, пол дня прошло, до сих пор не пришли, что делать?