Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
onixred
6 лет назад

Библиотека golos4j 0.0.16

Вот и обновилась библиотека golos4j теперь можно указывать бенефициаров

Пример

int id = 2;
//получаем  dynamic_global_properties 
GetDynamicGlobalPropertiesDto getDynamicGlobalPropertiesDto = getDynamicGlobalProperties();
DynamicGlobalPropertiesDto dynamicGlobalPropertiesDto = getDynamicGlobalPropertiesDto.getResults();

//формируем транзакцию
BaseTransactionDto baseTransactionDto = new BaseTransactionDto();
long headBlockNumber = dynamicGlobalPropertiesDto.getHeadBlockNumber();
String headBlockId = dynamicGlobalPropertiesDto.getHeadBlockId();
int refBlockNum = TransactionUtil.long2Last2Byte(headBlockNumber);
baseTransactionDto.setRefBlockNum(refBlockNum);
long refBlockPrefix = TransactionUtil.hexString2Long(headBlockId, 4);
baseTransactionDto.setRefBlockPrefix(refBlockPrefix);
Date time = dynamicGlobalPropertiesDto.getTime();
Date expiration = Util.addTime(time, BaseTransactionDto.DEFAULT_EXPIRATION_TIME);
baseTransactionDto.setExpiration(expiration);
//Указываем список операций например сделаем новый пост и укажим бенефициаров
List<BaseOperation> operations = baseTransactionDto.getOperations();
// Операция комментарий
CommentDto commentDto = new CommentDto();
operations.add(commentDto);
String title = "Test post author " + ACCOUNT + " привет";
String permlink = Util.title2Permlink(title);
String image = "https://imgp.golos.io/0x0/http://s1.iconbird.com/ico/2013/8/429/w512h5121377940192185096settingsstreamline.png ";
String body = "This is body. \n " + ACCOUNT + ") \n " + image;
//формируем теги
Map<String, List<String>> key2value = new HashMap<String, List<String>>();
List<String> tags = new ArrayList<String>();
tags.add("ru--programmirovanie");
tags.add("ru--golos4j");
tags.add("api");
List<String> images = new ArrayList<String>();
images.add(image);
key2value.put(CommentDto.TAGS_KEY, tags);
key2value.put(CommentDto.IMAGE_KEY, images);
commentDto.setAuthor(ACCOUNT);
commentDto.setBody(body);
commentDto.setJsonMetadata(key2value);
commentDto.setParentAuthor("");
commentDto.setParentPermlink("rzd-free-seat");
commentDto.setPermlink(permlink);
commentDto.setTitle(title);
// Операция comment_options
CommentOptionsDto сommentOptionsDto = new CommentOptionsDto();
operations.add(сommentOptionsDto);
сommentOptionsDto.setAllowCurationRewards(true);
сommentOptionsDto.setAllowVotes(true);
сommentOptionsDto.setAuthor(ACCOUNT);
Asset maxAcceptedPayout = new Asset(1000000, AssetSymbolType.GBG);
сommentOptionsDto.setMaxAcceptedPayout(maxAcceptedPayout);
//100%
сommentOptionsDto.setPercentSteemDollars((short) 10000);
сommentOptionsDto.setPermlink(permlink);
//указываем расширение операции comment_options
List<CommentOptionsExtension> extensions = new ArrayList<CommentOptionsExtension>();
сommentOptionsDto.setExtensions(extensions);
//указываем что наше расширение это  comment_payout_beneficiaries
CommentPayoutBeneficiaries beneficiaries = new CommentPayoutBeneficiaries();
extensions.add(beneficiaries);
//задаем конкретных бенефициаров например  golosio, netfriend и  vik (просто для примера)
List<BeneficiaryRouteTypeDto> beneficiariesRoute = new ArrayList<BeneficiaryRouteTypeDto>();
beneficiaries.setBeneficiaries(beneficiariesRoute);
BeneficiaryRouteTypeDto beneficiaryRouteTypeDto1 = new BeneficiaryRouteTypeDto();
beneficiariesRoute.add(beneficiaryRouteTypeDto1);
// это netfriend и я ему  отчисляю 10%
beneficiaryRouteTypeDto1.setAccount("netfriend");
beneficiaryRouteTypeDto1.setWeight((short) 1000);
// это vik и я ему  отчисляю 10%
BeneficiaryRouteTypeDto beneficiaryRouteTypeDto2 = new BeneficiaryRouteTypeDto();
beneficiariesRoute.add(beneficiaryRouteTypeDto2);
beneficiaryRouteTypeDto2.setAccount("vik");
beneficiaryRouteTypeDto2.setWeight((short) 1000);
// это golosio и я ему  отчисляю 10%
BeneficiaryRouteTypeDto beneficiaryRouteTypeDto3 = new BeneficiaryRouteTypeDto();
beneficiariesRoute.add(beneficiaryRouteTypeDto2);
beneficiaryRouteTypeDto3.setAccount("golosio");
beneficiaryRouteTypeDto3.setWeight((short) 1000);

//отлично теперь нужно узнать chain_id для подписи
GetConfigDto getConfigDto = getConfig();
ConfigDto configDto = getConfigDto.getResults();
String chainId = configDto.getSteemitChainId();
ECKey postingKey = DumpedPrivateKey.fromBase58(null, PRIVATE_KEY).getKey();
//указываем chain_id и постинг ключ
baseTransactionDto.setSignatures(chainId, postingKey);
LOG.info("get baseTransactionDto: " + baseTransactionDto);
//создаем транзакцию
BroadcastTransactionSynchronous broadcastTransactionSynchronous = new BroadcastTransactionSynchronous(id, baseTransactionDto);
//отправляем транзакцию
GetBroadcastTransactionSynchronousDto broadcastTransactionSynchronousDto = ServiceWebSocket.executePost(broadcastTransactionSynchronous, GetBroadcastTransactionSynchronousDto.class, WSS_URL_NODE);
//смотрим ответ транзакции
LOG.info("Get result:" + broadcastTransactionSynchronousDto);
LOG.info("Finish method broadcastTransactionSynchronousComment");

Таким образом я создал пост назначил бенефициаров (@golosio, @netfriend и @vik) и для каждого указал 10% отчислений.

1
24.888 GOLOS
На Golos с December 2016
Комментарии (7)
Сортировать по:
Сначала старые