Size: a a a

2021 November 20

AC

All Cats in Ethereum Russia
Официальная либа go-ethereum это все умеет
источник

VK

Vasily Kondratyev in Ethereum Russia
ну это да, или там любая, где есть keccak)) ладно, сделаю для прикола на Rust
источник

AC

All Cats in Ethereum Russia
Кормишь жсон аби
Потом abi.Methods[name].signature или index
источник

AC

All Cats in Ethereum Russia
Щас с телефона, не помню
источник

AC

All Cats in Ethereum Russia
Там код 10 строк будет от силы, это с учётом того что ты сделаешь консольную утилиту)
источник

VK

Vasily Kondratyev in Ethereum Russia
ну да, только странно, что до сих пор никто не сподобился)
источник

VK

Vasily Kondratyev in Ethereum Russia
буду первым, что ж
источник

VK

Vasily Kondratyev in Ethereum Russia
пришлю ссылку на репу)
источник

AC

All Cats in Ethereum Russia
Даёшь опенсорс!
источник

VK

Vasily Kondratyev in Ethereum Russia
источник

T3

TimTim🌵 32bit in Ethereum Russia
Ребят, в играх на эфире нельзя же всю логику на эфире делать? Потому что у меня практически каждую секунду у человека должен изменяться баланс. Тогда он будет тратить немеренное количество денег на транзакции. Я хочу эту логику делать с обычной БД и добавить способ вывода накоплений на эфир.
источник

e

ezhidze in Ethereum Russia
Всем привет. На скрине подсвечивает ошибку:

Data location must be "memory" or "calldata" for parameter in function, but none was given

Если поставить для city модификатор memory, то всё исправляется. У меня есть 2 нубских вопроса:

1. Почему он просит сделать memory только один параметр, а не все?
2. Зачем вообще сохранять в памяти параметр функции?
источник

EG

Egor Gavrilov in Ethereum Russia
если тип данных всегда занимает фиксированное количество памяти, то модификатор не нужен, он сразу идет в стэк

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

e

ezhidze in Ethereum Russia
Ага, понял. Ну то есть адресу это не нужно, поскольку он всегда 32 битный. Также как и типам вроде uint8, uint32 и тд
источник

e

ezhidze in Ethereum Russia
@modagavr Я также до этого пытался маленько по-другому сделать, но не получилось передать tuple в функцию. Можешь тоже подсказать, пожалуйста?
источник

e

ezhidze in Ethereum Russia
Переслано от ezhidze
Здравствуй! Извини, что спрашиваю в выходной, но с твоим опытом это вопрос на 2 минуты.

Есть такой контракт:

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;

contract StoreContract {
 struct Store {
   string city;
   uint balance;
 }

 mapping (address => Store) public stores;

 function getStore(address account) public view returns (Store memory) {
   return stores[account];
 }

 function addStore(address account, Store memory store) public {
   stores[account] = store;
 }
}

Если вызвать addStore c параметрами как на скрине, то выдаёт ошибку:

transact to StoreContract.addStore errored: Error encoding arguments: Error: types/values length mismatch (count={"types":2"values":3} value={"types":["address""tuple(stringuint256)"]"values":["0xAdabc19112Bd5C5e7FBB07bD60aa3c97b70708B9""("" 1000)"]} code=INVALID_ARGUMENT version=abi/5.4.1)
источник

e

ezhidze in Ethereum Russia
Переслано от ezhidze
Я так понял, основная проблема в том, что я как-то неправильно передаю tuple. Я знаю, что можно решить проблему, передав по отдельности city и balance, но просто хотел разобраться, почему у меня в данном случае не работает.

Возможно, дело также в том, что я в сигнатуре addStore указал аргумент store с модификатором memory. Но там на выбор: memory или calldata, и, как мне кажется, calldata это вообще про что-то другое.
источник

e

ezhidze in Ethereum Russia
Переслано от ezhidze
В целом вопрос о том, как передавать tuple при вызове external-функций
источник

EG

Egor Gavrilov in Ethereum Russia
адрес сам по себе всегда 20 байт, 160 бит

но в целом фиксированные типы данных занимают 32 байта, фиксированный слот в “ленте памяти”
источник

EG

Egor Gavrilov in Ethereum Russia
во-первых включай сразу солидити 0.8+
^0.8.10

от версии зависит подход со структурами в качестве аргументов (точнее от версии абиэнкодера)
источник