В обычной функции прочности мы должны назвать аргументы следующим образом:
function getAddr(string AddrName) public. . .
Здесь аргументом является строка с именем AddrName
.
Я создал децентрализованное приложение, которое упрощает взаимодействие со смарт-контрактом с использованием параметров URL. Таким образом, чтобы инициировать функцию с предварительно заполненными значениями в аргументах, я могу просто просмотреть: https://conteract.io/c/moataddress?function=getAddr&AddrName=owner
Но предварительно заполненные входные значения не работают, mapping
так как аргументы не названы в сопоставлениях: https://conteract.io/c/moatfund?function=Investors
mapping(address => uint256) public Investors;
При условии, что сопоставление используется чаще, есть ли способ назвать аргументы в сопоставлении или какой-либо обходной путь, который может решить эту проблему.
Спасибо.
Нет, это невозможно сделать, и это не проблема. Отображение представляет собой ассоциативную структуру, в которой уникальный ключ сопоставляется с другим значением. В вашем случае имя сопоставления Investors
.
Вы можете либо найти лучшее имя (например, InvestorsBalance
которое будет определять, какой ключ и что сопоставляется), либо создать функцию для получения значения сопоставления с учетом ключа.
function getBalance(adddress investor) public returns(uint256) {
return Investors[investor];
}
Но это зависит от разработчика контракта, поэтому вы не будете знать, что вы пытаетесь сделать с этим конкретным отображением. Вы не можете делать предположения о вашем инструменте.
Опция может заключаться в том, чтобы обогатить ваше децентрализованное приложение, запрашивая имя параметров сопоставления при импорте контракта. Но это может быть что-то, что вам может понадобиться хранить вне сети.