korzunav
7 лет назадНовые операции в Ditch
Привет Голосяне!
Обьемное обновление библиотек Ditch и Cryptography.ECDSA наконец готово к употреблению!
GitHub:
https://github.com/Chainers/Ditch/releases/tag/3.1.3
https://github.com/Chainers/Cryptography.ECDSA
Что нового:
- Генератор ключей (пары публичный/приватный ключ в соответствии с конвенцией)
- AccountCreateOperation (операция создания нового аккаунта)
- AccountUpdateOperation (операция обновления аккаунта)
- WithdrawVestingOperation (операция уменьшения силы голоса)
- TransferToVestingOperation (операция для увеличения силы голоса)
- TransferOperation ((операция отправка голосов/GBG)
- WitnessUpdateOperation (операция обновления витнеса)
Установка пакетов с Nuget
PM> Install-Package Ditch.Steem -Version 3.1.3
PM> Install-Package Ditch.Golos -Version 3.1.3
Как использовать
Пример генерации ключей
AccountCreateOperation
var name = "userlogin";
var op = new AccountCreateOperation
{
Fee = new Asset(3000, 3, "GBG"),
Creator = User.Login,
NewAccountName = User.Login,
JsonMetadata = "",
};
var privateKey = Secp256K1Manager.GenerateRandomKey();
var privateWif = "P" + Base58.EncodePrivateWif(privateKey);
var subWif = Base58.GetSubWif(name, privateWif, "owner");
var pk = Base58.DecodePrivateWif(subWif);
var subPublicKey = Secp256K1Manager.GetPublicKey(pk, true);
op.Owner.KeyAuths.Add(new KeyValuePair<PublicKeyType, ushort>(new PublicKeyType(subPublicKey), 1));
subWif = Base58.GetSubWif(name, privateWif, "active");
pk = Base58.DecodePrivateWif(subWif);
subPublicKey = Secp256K1Manager.GetPublicKey(pk, true);
op.Active.KeyAuths.Add(new KeyValuePair<PublicKeyType, ushort>(new PublicKeyType(subPublicKey), 1));
subWif = Base58.GetSubWif(name, privateWif, "posting");
pk = Base58.DecodePrivateWif(subWif);
subPublicKey = Secp256K1Manager.GetPublicKey(pk, true);
op.Posting.KeyAuths.Add(new KeyValuePair<PublicKeyType, ushort>(new PublicKeyType(subPublicKey), 1));
subWif = Base58.GetSubWif(name, privateWif, "memo");
pk = Base58.DecodePrivateWif(subWif);
subPublicKey = Secp256K1Manager.GetPublicKey(pk, true);
op.MemoKey = new PublicKeyType(subPublicKey);
var response = Api.BroadcastOperationsUser.ActiveKeysCancellationToken.None, op);
AccountUpdateOperation
var resp = Api.LookupAccountNames(new[] { User.Login }, CancellationToken.None);
var acc = resp.Result[0];
var op = new AccountUpdateOperation(User.Login, acc.MemoKey, "новые данные");
var response = Api.BroadcastOperations(User.ActiveKeys, CancellationToken.None, op);
WithdrawVestingOperation
var op = new WithdrawVestingOperation(User.Login, new Asset("0.001 GESTS"));
var response = Api.BroadcastOperations(User.ActiveKeys, CancellationToken.None, op);
WitnessUpdateOperation
var op = new WitnessUpdateOperation(User.Login, "url на пост делегата", new PublicKeyType("GLS1111111111111111111111111111111114T1Anm"), new ChainProperties(1000, new Asset("1.000 GOLOS"), 131072), new Asset("0.000 GOLOS"));
var response = Api.BroadcastOperations(User.ActiveKeys, CancellationToken.None, op);
TransferToVestingOperation
var op = new TransferToVestingOperation(User.Login, User.Login, new Asset("0.001 GOLOS"));
var response = Api.BroadcastOperations(User.ActiveKeys, CancellationToken.None, op);
TransferOperation
var op = new TransferOperation(User.Login, User.Login, new Asset("0.001 GBG"), "тут можно добавить текст");
var response = Api.BroadcastOperations(User.ActiveKeys, CancellationToken.None, op);