1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/BytomBlockchain-bytom-java-sdk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 5.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 21:53 4230b63

Реализация Java для подписания транзакции в автономном режиме (tx-signer)

Предварительные действия:

Добавить зависимость в проект:

  1. Сначала получите исходный код:

    git clone https://github.com/Bytom/bytom-java-sdk.git
  2. Установите в репозиторий Maven:

    $ mvn clean install -DskipTests
  3. Добавьте зависимость:

    <dependency>
        <groupId>io.bytom</groupId>
        <artifactId>tx-signer</artifactId>
        <version>1.0.2</version>
    </dependency>

Пример:

Создание транзакции с использованием ввода данных о расходах:

        String btmAssetID = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
        
        // создание ввода данных о расходе
        SpendInput input = new SpendInput();
        input.setAssetId(btmAssetID);
        input.setAmount(9800000000L);
        
        // управляющая программа ввода данных о расходовании
        input.setProgram("0014cb9f2391bafe2bc1159b2c4c8a0f17ba1b4dd94e");
        
        // позиция источника ввода данных о расходовании
        input.setSourcePosition(2);
        
        // идентификатор источника ввода данных о расходовании
        input.setSourceID("4b5cb973f5bef4eadde4c89b92ee73312b940e84164da0594149554cc8a2adea");
        
        // используется ли ввод данных о расходовании для изменения
        input.setChange(true);
        
        // BIP-протокол для производных путей, по умолчанию BIP44
        input.setBipProtocol(BIPProtocol.BIP32);
        
        // индекс управляющей программы ввода данных о расходовании
        input.setControlProgramIndex(457);
        
        // индекс учётной записи
        input.setKeyIndex(1);
        
        // предоставить корневой закрытый ключ для подписи
        input.setRootPrivateKey("4864bae85cf38bfbb347684abdbc01e311a24f99e2c7fe94f3c071d9c83d8a5a349722316972e382c339b79b7e1d83a565c6b3e7cf46847733a47044ae493257");

        // создать транзакцию с подписью
        Transaction tx = new Transaction.Builder()
                .addInput(input)
                .addOutput(new Output(btmAssetID, 8800000000L, "0014a82f02bc37bc5ed87d5f9fca02f8a6a7d89cdd5c"))
                .addOutput(new Output(btmAssetID, 900000000L, "00200824e931fb806bd77fdcd291aad3bd0a4493443a4120062bd659e64a3e0bac66"))
                .setTimeRange(0)
                .build();

        String rawTransaction = tx.rawTransaction();

Создание транзакции с вводом данных об эмиссии:

        IssuanceInput issuanceInput = new IssuanceInput();
        issuanceInput.setAssetId("7b38dc897329a288ea31031724f5c55bcafec80468a546955023380af2faad14");
        issuanceInput.setAmount(100000000000L);
        
        // программа эмиссии
        issuanceInput.setProgram("ae2054a71277cc162eb3eb21b5bd9fe54402829a53b294deaed91692a2cd8a081f9c5151ad");
        issuanceInput.setNonce("ac9d5a527f5ab00a");
        
        // индекс актива
        issuanceInput.setKeyIndex(5);
        
        // необработанное определение актива
        issuanceInput.setRawAssetDefinition("7b0a202022646563696d616c73223a20382c0a2020226465736372697074696f6e223a207b7d2c0a2020226e616d65223a2022222c0a20202273796d626f6c223a2022220a7d");
        
        // предоставить корневой закрытый ключ для подписи
        issuanceInput.setRootPrivateKey("4864bae85cf38bfbb347684abdbc01e311a24f99e2c7fe94f3c071d9c83d8a5a349722316972e382c339b79b7e1d83a565c6b3e7cf46847733a47044ae493257");

        SpendInput spendInput = new SpendInput();
        spendInput.setAssetId(btmAssetID);
        spendInput.setAmount(9800000000L);
        spendInput.setProgram("0014cb9f2391bafe2bc1159b2c4c8a0f17ba1b4dd94e");
        spendInput.setKeyIndex(1);
        spendInput.setChange(true);
        spendInput.setSourceID("4b5cb973f5bef4eadde4c89b92ee73312b940e84164da0594149554cc8a2adea");
        spendInput.setSourcePosition(2);
        spendInput.setControlProgramIndex(457);
        spendInput.setRootPrivateKey("4864bae85cf38bfbb347684abdbc01e311a24f99e2c7fe94f3c071d9c83d8a5a349722316972e382c339b79b7e1d83a565c6b3e7cf46847733a47044ae493257");

        Transaction tx = new Transaction.Builder()
                .addInput(issuanceInput)
                .addInput(spendInput)
                .addOutput(new ...)

*Примечание: предоставленный текст содержит синтаксические ошибки и не является полноценным рабочим примером.* ```
Output("7b38dc897329a288ea31031724f5c55bcafec80468a546955023380af2faad14", 100000000000L, "001437e1aec83a4e6587ca9609e4e5aa728db7007449")
                .addOutput(new Output(btmAssetID, 9700000000L, "00148be1104e04734e5edaba5eea2e85793896b77c56"))
                .setTimeRange(0)
                .build();

        String rawTx = tx.rawTransaction();

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/BytomBlockchain-bytom-java-sdk.git
git@api.gitlife.ru:oschina-mirror/BytomBlockchain-bytom-java-sdk.git
oschina-mirror
BytomBlockchain-bytom-java-sdk
BytomBlockchain-bytom-java-sdk
master