Установка пустых массивов, таких как [], на inputs
и outputs
- не вариант. Это означало бы, что вы не позволяете ни одному из адресов считывать и писать через процессор транзакций. Однако вы можете установить частичный адрес в inputs
и outputs
. Например, вы можете установить 1cf126
для inputs
и outputs
, и ваш код начнет работать.
Установка частичного адреса позволит вашему TP читать и / или записывать любой листовой узел в поддерево, на которое указывает ваш адрес. Чтобы понять, как это работает, обратитесь к разделу https://sawtooth.hyperledger.org/docs/core/releases/1.0/architecture/global_state.html?#radix -merkle-tree-review .
Пример, приведенный в документации, относится к семейству транзакций intkey
, а ввод
const payload = {
Verb: 'set',
Name: 'foo',
Value: 32
}
Но если вы хотите установить test
вместо foo
, вам придется рассчитать адрес для него и поместить его в inputs
и outputs
. Расчет адреса примечания - это то, что вы поддерживаете для клиента и TP для конкретного семейства транзакций. intkey
делает это путем объединения двух из следующих
- Sha512 (
intkey
) - первые 6 символов в шестнадцатеричном представлении - Sha512 (
foo
) - остальные символов из 64-го индекса
для foo
.
Ссылка: https://github.com/hyperledger/sawtooth-sdk-rust/blob/190861a14046122ce6ecd684908c3d7a877e26ca/examples/intkey_rust/src/handler.rs#L175
В случае test
это будет конкатенация
- Sha512 (
intkey
) - первые 6 символов в шестнадцатеричном представлении - Sha512 (
test
) - Остальные символы из 64-го индекса
Надеюсь, это прояснит. Также, пожалуйста, обратитесь к определению Merkle-Radix выше, оно содержит подробную информацию о том, как можно рассчитать адрес. Это до реализации семейства транзакций.