文档章节

stellar

吴伟祥
 吴伟祥
发布于 2017/09/08 16:59
字数 1016
阅读 14
收藏 0
点赞 0
评论 0

Stellar Network Overview

Stellar Ecosystem

Create an Account

package com.step.controller;
import org.stellar.sdk.KeyPair;
import java.net.*;
import java.io.*;
import java.util.*;
import org.stellar.sdk.Server;
import org.stellar.sdk.responses.AccountResponse;

/**
 * Created by weixiang.wu on 2017/9/8.
 */
public class Test {
    
    public static void main(String[] args) throws IOException, DecoderException {
        KeyPair pair = KeyPair.random();
        System.out.println(new String(pair.getSecretSeed()));
        System.out.println(pair.getAccountId());
        String friendbotUrl = String.format(
                "https://horizon-testnet.stellar.org/friendbot?addr=%s",
                pair.getAccountId());
        InputStream response = new URL(friendbotUrl).openStream();
        String body = new Scanner(response, "UTF-8").useDelimiter("\\A").next();
        System.out.println("SUCCESS! You have a new account :)\n" + body);
        Server server = new Server("https://horizon-testnet.stellar.org");
        AccountResponse account = server.accounts().account(KeyPair.fromAccountId(pair.getAccountId()));
        System.out.println("Balances for account " + pair.getAccountId());
        for (AccountResponse.Balance balance : account.getBalances()) {
            System.out.println(String.format(
                    "Type: %s, Code: %s, Balance: %s",
                    balance.getAssetType(),
                    balance.getAssetCode(),
                    balance.getBalance()));
        }
}

Send Payments

Actions that change things in Stellar, like sending payments, changing your account, or making offers to trade various kinds of currencies, are called operations.[1] In order to actually perform an operation, you create a transaction, which is just a group of operations accompanied by some extra information, like what account is making the transaction and a cryptographic signature to verify that the transaction is authentic.[2]

If any operation in the transaction fails, they all fail. For example, let’s say you have 100 lumens and you make two payment operations of 60 lumens each. If you make two transactions (each with one operation), the first will succeed and the second will fail because you don’t have enough lumens. You’ll be left with 40 lumens. However, if you group the two payments into a single transaction, they will both fail and you’ll be left with the full 100 lumens still in your account.

Finally, every transaction costs a small fee. Like the minimum balance on accounts, this fee helps stop people from overloading the system with lots of transactions. Known as the base fee, it is very small—100 stroops per operation (that’s 0.00001 XLM; stroops are easier to talk about than such tiny fractions of a lumen).

A transaction with two operations would cost 200 stroops.[3]

Building a Transaction

Stellar stores and communicates transaction data in a binary format called XDR.[4] Luckily, the Stellar SDKs provide tools that take care of all that. Here’s how you might send 10 lumens to another account:

 /**
     * 创建一笔交易
     *
     * @param source1      来源账户
     * @param destination1 目标账户
     * @param hash         上传文件的hash值
     * @throws IOException
     */
    public static void buildingTransaction(String source1, String destination1, String hash) throws IOException, DecoderException {
        Logger logger = org.apache.log4j.LogManager.getLogger(BuildingTransaction.class);
          /*新网络 Network提供获取不同恒星网络的密码或id,提供了
        Network.current 类方法,返回该进程将用于生成签名的网络
        添加第一个签名之前,应该选择应用使用的网络
        usePublicNetwork(恒星公共网络) 或者 useTestNetWork(测试网络) 方法。
        */
        Network.useTestNetwork();
        Server server = new Server("https://horizon-testnet.stellar.org");
        //不安全的人从一个strkey编码的星际秘密种子中创造出一个新的恒星密钥。这个方法是不安全的。只有当意识到安全问题时才使用。
        KeyPair source = null;
        try {
            source = KeyPair.fromSecretSeed(source1);
        } catch (Exception e) {
            throw new RuntimeException("私钥验证失败!");
        }
        //从一个字符串编码的恒星账户ID创建一个新的恒星密钥

        KeyPair destination = null;
        try {
            destination = KeyPair.fromAccountId(destination1);
        } catch (Exception e) {
            throw new RuntimeException("公钥验证失败!");
        }

        //1.通过从Stellar网络加载关联的帐户数据,确认要发送的帐户ID实际存在
        server.accounts().account(destination);
        //2.加载要发送的帐户的数据。一个帐户只能一次执行一个事务[5],并且有一个称为序列号的东西,这有助于Stellar验证事务的顺序
        // 交易的序列号需要与帐户的序列号匹配,oi。
        AccountResponse sourceAccount = server.accounts().account(source);

        //3.开始建立一个交易,需要账户对象,不仅仅是账户id,因为它会增加账户的序列号
        //构造一个新的事物构建器→为该事物添加一个新操作→为该事务添加一份备忘录→构建一个事务,它将增加源帐户的序列号。
        //4.addOperation()将付款操作添加到该账户.
        //new PaymentOperation.Builder(destination(将资产发送到目的帐户), new AssetTypeNative()(返回资产的类型), "0.00001"(asset发送的资产总额))创建一个新的PaymentOperation构建器
        //5.addMemo()添加元数据(备忘录)
        //build()构建一个事务,增加源账户的序列号。
        Transaction transaction = new Transaction.Builder(sourceAccount)
                .addOperation(new PaymentOperation.Builder(destination, new AssetTypeNative(), "0.00001"/*浮点数可能会不准确*/).build())
                .addMemo(Memo.hash(hash))/*对此数据不做任何操作*/
                .build();
        //6.为该事务添加一个新的签名
        transaction.sign(source);/*必须使用密码种子进行加密签名,证明是你的交易而不是冒充你的人*/
        try {
            //7.将它发送到恒星网络上.
            SubmitTransactionResponse response = server.submitTransaction(transaction);
            System.out.println("支付成功!");
            System.out.println(response);
        } catch (Exception e) {
            logger.error("创建交易时发生异常,异常信息:", e);
        }

 

© 著作权归作者所有

吴伟祥
粉丝 6
博文 209
码字总数 189825
作品 0
宝山
后端工程师
前端——Stellar.js 制作视差滚动

近些年讨论得很热烈的设计趋势是视觉差滚动效果。不管你喜不喜欢,很多网站都在用它。在本教程中,我会介绍视觉差滚动和用jQuery插件Stellar.js来制作视觉差滚动效果。 视差滚动(Parallax ...

fycool ⋅ 2016/11/08 ⋅ 0

AugustRush/Stellar

A fantastic Physical animation library for swift(Not Just Spring !!!), it is base on UIDynamic and extension to it, friendly APIs make you use it or custom your own animation ve......

AugustRush ⋅ 2016/07/02 ⋅ 0

电驴创始人Jed McCaleb的传奇人生

(本文首发于微信公众号“万云BaaS”) Jed McCaleb,区块链项目Stellar联合创始人兼首席技术官、Ripple创始人,也是eDonkey(电驴)的创始人,是电驴各时期版本的软件的作者和主要开发者。e...

万向区块链实验室 ⋅ 01/11 ⋅ 0

IBM 发布跨境支付区块链网络,可完成实时清算

IBM周一发布了全球一个跨境支付区块链网络。“这标志着企业区块链进化到了新的阶段。”该公司全球区块链市场开发副总裁杰西·伦德(Jesse Lund)说,“这是一种范式转变。数字货币和比特币这...

达尔文 ⋅ 2017/10/17 ⋅ 8

为设计师和开发者提供的10个超棒 jQuery 插件

Zoomooz.js Zoomooz是一款制作网页元素变焦的jQuery插件,它可以制作像Prezi幻灯片和缩放图片或者其他细节。 MediaElement.js MediaElement.js不是为现代浏览器提供一个HTML5播放器和为老版本...

书一 ⋅ 2013/04/03 ⋅ 17

15 个用于布局和 UI 增强的 jQuery 插件

有非常非常多的 jQuery 插件,这些插件可以简化你的 Web 应用开发。今天我们向你推荐 15 个用于布局和 UI 增强的 jQuery 插件。 Superscrollorama jQuery File Upload Demo jQuery Knob jQu...

oschina ⋅ 2014/11/07 ⋅ 9

期待已久的2012年度最佳jQuery插件揭晓

近日,国外著名博客WDL发布了2012年度最佳 jQuery 插件。jQuery 自2006年发布以来,经过6年的迅速发展,目前已是最流行和使用最广泛的 JavaScript 框架,这主要归功于众多围绕 jQuery 的技术...

主编 ⋅ 2012/12/25 ⋅ 34

货币传输的去中心化网关区块链--stellar-core

恒星网络,stellar,一个由前瑞波(Ripple)创始人Jed McCaleb发起的区块链接项目,用于搭建一个数字货币与法定货币之间传输的去中心化网关。 恒星网络是基于Ripple基础上进行开发,在比特币...

匿名 ⋅ 2016/10/30 ⋅ 0

“锯齿湖”区块链平台--Sawtooth Lake

Sawtooth Lake(锯齿湖)是英特尔在2016年4月推出的实验性分布式账本平台。英特尔将此项目描述为“用于建造、部署和运行分布式账本的高度模块化平台”。 Sawtooth Lake 平台采用了两种已建立...

匿名 ⋅ 2017/03/01 ⋅ 0

这真真是极好的

“这真真是极好的”该怎么翻译成英文,有多少种翻译方法呢? “真”在这里是副词,表示“完全确实,毫无疑问”,用了两个真就是在使用堆叠效果,类似200%的用法,重点是“极好的”,英文中有...

杨尚川 ⋅ 2015/11/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 37分钟前 ⋅ 4

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部