区块链研习社

区块链开发之EOS钱包APP

2020-04-10  本文已影响0人  zhangchunlin

1、目录

  1. 基础概念
  2. 开发准备
  3. 实战编码
  4. 总结

2、基础概念

3、开发准备

1、需要准备生成EOS公私钥的的工具,代码已开源

image
2、依赖官方SDK
implementation 'one.block:eosiojava:0.1.2'
implementation 'one.block:eosiojavasoftkeysignatureprovider:0.1.3'
implementation 'one.block:eosiojavaandroidabieosserializationprovider:0.1.1'
implementation 'one.block:eosiojavarpcprovider:0.1.1'

android{
    packagingOptions {
        exclude 'lib/x86_64/darwin/libscrypt.dylib'
        exclude 'lib/x86_64/freebsd/libscrypt.so'
        exclude 'lib/x86_64/linux/libscrypt.so'
    }
}

3、注册测试账户,这步可有可无

地址: https://testnet.eos.io/
注册过程就不讲了,如果没有出现Google人机验证,就需要你的网络需要翻墙。
注册完成后,会的到一下东西。

image
4、了解与EOS节点调用。

更多调用方法: http://cw.hubwiz.com/card/c/eos-rpc-api/

4、实战编码

1、生成无助记词的EOS账户:

EosPrivateKey eosPrivateKey = EosPrivateKey();
System.out.println(eosPrivateKey.toWif());
System.out.println(eosPrivateKey.publicKey.toString());

结果:
    5HycMUAMZcSugxkU7BfecZ6Bx6akd8S68tpNrGH2otgMrtwFfXF
    EOS83eQ2iiS9DL7phqxBQHZhxgnCWoQKddjrBindou87aEbKkbwXh

2、生成有助记词的EOS账户:

String genMnemonic = ChainUtil.genMnemonic(Words.TWELVE)
ECKey genECKey = ChainUtil.genECKey(genMnemonic, "m/44'/194'/0'/0/0");
EosPrivateKey eosPrivateKey = EosPrivateKey(genECKey.privKeyBytes)
System.out.println(genMnemonic)
System.out.println(eosPrivateKey.toWif())
System.out.println(eosPrivateKey.publicKey.toString())

结果:
    consider illness click ritual collect act cart grain awkward name feed question
    5HycMUAMZcSugxkU7BfecZ6Bx6akd8S68tpNrGH2otgMrtwFfXF
    EOS83eQ2iiS9DL7phqxBQHZhxgnCWoQKddjrBindou87aEbKkbwXh

3、创建账户:

首先需要你有一个有EOS的账户:这个一般是自己购买或者找别人代你创建。一般的做法是直接掉自己的服务器创建。

4、获取节点信息:

IRPCProvider rpcProvider = new EosioJavaRpcProviderImpl("https://api.testnet.eos.io");
GetInfoResponse info = rpcProvider.getInfo();
System.out.println(JSON.toJSONString(info));
结果:
{"blockCpuLimit":199900,"blockNetLimit":1048576,"chainId":"0db13ab9b321c37c0ba8481cb4681c2788b622c3abfd1f12f0e5353d44ba6e72","headBlockId":"00c01c085f1fd4463fd90117a4f32c4394822222fcbf75e7907dc73fc2cd94ba","headBlockNum":12590088,"headBlockProducer":"initd","headBlockTime":"2020-03-27T06:28:14.500","lastIrreversibleBlockId":"00c01abe58b36a630f6e91cf4309347849bb719865748bcee8d39c2b5a6b6e1b","lastIrreversibleBlockNum":12589758,"serverVersion":"e19afc80","serverVersionString":"v2.0.0","virtualBlockCpuLimit":200000000,"virtualBlockNetLimit":1048576000}

5、转账:
这是EOS标准的转账代码:来自官网: https://github.com/EOSIO/eosio-java

IRPCProvider rpcProvider = new EosioJavaRpcProviderImpl("https://api.testnet.eos.io");
ISerializationProvider serializationProvider = new AbiEosSerializationProviderImpl();
IABIProvider abiProvider = new ABIProviderImpl(rpcProvider, serializationProvider);
ISignatureProvider signatueProvider = new SoftKeySignatureProviderImpl();
signatureProvider.importKey(privateKeyK1EOS);
TransactionSession session = new TransactionSession(
        serializationProvider,
        rpcProvider,
        abiProvider,
        signatureProvider
);
TransactionProcessor processor = session.getTransactionProcessor();
String jsonData = "{\n" +
        "\"from\": \"你的账户名\",\n" +
        "\"to\": \"别人的账户名\",\n" +
        "\"quantity\": \"10.0000 EOS\",\n" +
        "\"memo\" : \"备注\"\n" +
        "}";
List<Authorization> authorizations = new ArrayList<>();
authorizations.add(new Authorization("你的账户名", "active or owner"));
List<Action> actions = new ArrayList<>();
actions.add(new Action("eosio.token", "transfer", authorizations, jsonData));
processor.prepare(actions);
PushTransactionResponse pushTransactionResponse = processor.signAndBroadcast();

5、总结

1、所有的调链操作都是和转账一个套路:只是不同的合约,不同的方法,和不同的参数而已:
下面的EOSIO的合约方法如下:

image

例如;
refund:一般是你赎回资源3天以后还没到账:需要您调用一下这个方法,赎回。

jsonData = "{"account_name":"你的账户名"}"
actions.add(new Action("eosio", "refund", authorizations, jsonData));

其他的保持和上面不变。
参考链接:https://bloks.io/account/eosio?loadContract=true&tab=Actions&account=eosio&scope=eosio&limit=100

2、需要源码 可以评论留言

上一篇下一篇

猜你喜欢

热点阅读