EOSブロックチェーンツール

パブリッククラスEosUtil {
//プライベートロガーロガー= Logger.getLogger(this.getClass());
民間最終静的な文字列のURL =「IP」。
民間最終静的からのString =「hpnettest111」。
民間最終静的に文字列=「hpnettest222」。
民間最終静的な文字列の数量=「0.0001 TOK」。
民間最終静的な文字列のメモ=「」;
民間最終静的な文字列のPrivateKey =「5JAHWaYwgzRSiJrwct7pY8m1c6Q22Vsh31pd4yD2Q9ufWNtjme3」。
民間最終静的な文字列の転送=「転送」。
民間最終静的な文字列eosiotoken =「eosio.token」。
民間最終静的な文字列のTOK =「TOK」。
民間最終静的てSimpleDateFormat simpleDate =新しいてSimpleDateFormat(「YYYY-MM-DD HH:MM:SS」);

public static  Rpc UrlRpc() {
	Rpc rpc = new Rpc(url);
	return rpc;
}

/**
 * 交易请求
 * @param from 转出账户
 * @param to 转入账户
 * @param quantity 交易金额(必须保留小数点后4位数,TOK,空格不可省略:0.0001 TOK)
 * @param memo 交易备注
 * @param privatekey 签名账户私钥
 * @param transfer 合约方法
 * @param eosiotoken 合约名
 * @return
 */
public  String act(String from,String to,String quantity,String memo,String privatekey,String transfer,String eosiotoken) {
	Rpc urlRpc = UrlRpc();
	// 发起交易
	Map<String, Object> args = new HashMap<String, Object>();
	args.put("from", from);// 转出账户
	args.put("to", to);// 转入账户
	args.put("quantity", "0.0001 CFS");// 交易金额
	args.put("memo", memo);// 交易备注
	String res = urlRpc.pushTransaction(eosiotoken, // 合约名 eosio.token
			transfer, // 合约方法 transfer
			from, // 签名账户
			privatekey, // 签名账户私钥
			args);

// logger.debug(「交易结果:」+ RES)。
HashMapの<文字列、文字列> specMap = JSON.parseObject(RES、HashMap.class)。
文字列メッセージ= specMap.get(「メッセージ」)。
// logger.debug(「操作结果:」+メッセージ)。
メッセージを返します。
}

/**
 * 查询账户信息
 * @param account 账户名
 */
private  void QueryAccount(String account) {
	Rpc urlRpc = UrlRpc();
	String accountmessage = urlRpc.getAccount(account);

// logger.debug( "結果:" + accountmessage);
System.err.println(accountmessage);
}

/**
 * 查询账户特定币种余额
 * @param account 账户名
 * @param eosiotoken 目标币合约
 * @param tok 目标币名称
 * @return
 */
private  String QuerygetCurrencyBalance(String account,String eosiotoken,String tok) {
	Rpc urlRpc = UrlRpc();
	String currencyBalance = urlRpc.getCurrencyBalance(account, eosiotoken, tok);
	HashMap<String,String> specMap = JSON.parseObject(currencyBalance , HashMap.class);
	String data = specMap.get("data");
	String substring = data.substring(1, data.length()-1);
	String replaceAll = substring.replaceAll("\"", " ");

// logger.debug( "結果:" + currencyBalance);
でReplaceAllを返します;
}

/**
 * 查询交易记录(Http请求查询)
 * @param account 查询账户名
 * @param pos 偏移量
 * @param offset 起始位置
 * @return  pos,offset为空则查询所有交易记录
 * 转账方每次转账操作会通知合约方,对手方,自己方,对于支出方每次支出都会产生3条交易记录
 */
public  List<String> getActionsHttp(String account,int pos,int offset) {
	Map<String, String> map=new HashMap<>();
	map.put("account_name", account);
	map.put("pos", String.valueOf(pos));
	map.put("offset", String.valueOf(offset));
	List<String> list=new ArrayList<>();
	try {
		String eoSpost = EosHttpUtils.EOSpost(url+"/v1/history/get_actions", map);
		List<Map<String, Object>> toListMap = ToListMap(eoSpost);
		for (Map<String, Object> map2 : toListMap) {
			String from = map2.get("from").toString();
			String to = map2.get("to").toString();
			String quantity = map2.get("quantity").toString();
			String memo = map2.get("memo").toString();
			String rember="from:"+from+",to:"+to+",quantity:"+quantity+",memo:"+memo;
			list.add(rember);
		}
		return list;
	} catch (Exception e) {
		e.printStackTrace();
	}
	return null;
}

/**
 * 查询交易记录
 * @param account 查询账户名
 * @param pos 偏移量
 * @param offset 起始位置
 * @return  pos,offset为空则查询所有交易记录
 * 转账方每次转账操作会通知合约方,对手方,自己方,对于支出方每次支出都会产生3条交易记录
 */
public  List<String> getActionsJar(String account,int pos,int offset) {
	Rpc urlRpc = UrlRpc();
	String actions = urlRpc.getActions(account, pos, offset);
	List<Map<String, Object>> toListMap = ToListMapJar(actions);
	List<String> list=new ArrayList<>();
	for (Map<String, Object> map2 : toListMap) {
		String from = map2.get("from").toString();
		String to = map2.get("to").toString();
		String quantity = map2.get("quantity").toString();
		String memo = map2.get("memo").toString();
		String rember="from:"+from+",to:"+to+",quantity:"+quantity+",memo:"+memo;
		list.add(rember);
	}
	return list;
}

/**
 * 根据公钥获取账户名
 * @param result
 * @return
 */
public  String getNameByePKey(String publickey) {
	Rpc urlRpc = UrlRpc();
	try {
		String keyAccounts = urlRpc.getKeyAccounts(publickey);

// logger.debug(「操作结果:」+ keyAccounts)。
JSONObjectのparseObject = JSON.parseObject(keyAccounts)。
ストリングストリング= parseObject.getString(「データ」)。
JSONObject parseObjectdata = JSON.parseObject(列)。
ストリング名= parseObjectdata.getString(「account_names」)。
ストリングストリング= Name.substring(1、Name.length() - 1)。
ストリングでReplaceAll = substring.replaceAll( "" ""「);
でReplaceAllを返す;
}キャッチ(例外e){
( 『检查公钥的合法性を请』)新をスロー;
}
}

/**
 * 创建账户
 * @param accountName 想创建的账户名(账户名必须是12位,并且只包含a-z1-5,低于12位的一般是特殊账户)
 */
public  void createAccount(String accountName) {
	Map<String, String> key = getKey();
	String publicKey = key.get("publicKey");
	Map<String, String> map=new HashMap<>();
	map.put("accountName", accountName);
	map.put("pk", publicKey);
	try {
		String eoSpost = EosHttpUtils.EOSpost("http://59.110.220.75"+"/eosSak/CreateSysAccount", map);

// logger.debug(「結果:」+ eoSpost);
}キャッチ(例外E){
スロー新新はIllegalArgumentException(「、公開鍵の有効性を確認し、アカウント名は12でなければならない、とだけ-z1-5を備えてください。 「);
}
}

/**
 * 随笔生成密钥对
 * @return
 */
public  Map<String, String> getKey(){
	IdWorker idWorker=new IdWorker();
	long nextId = idWorker.nextId();
    String privateKey = Ecc.seedPrivate(String.valueOf(nextId));
    String publicKey = Ecc.getPublicKey(privateKey);
    Map<String,String> map=new HashMap<>();
    map.put("publicKey", publicKey);
    map.put("privateKey", privateKey);
	return map;
}

/**
 * 去重
 * @param list
 * @return
 */
public static  List removeDuplicate(List list) {   
    HashSet h = new HashSet(list);   
    list.clear();   
    list.addAll(h);   
    return list;   
} 

public static  List<Map<String, Object>> ToListMap(String result) {
	JSONObject parseObject = JSON.parseObject(result);
	String string = parseObject.getString("actions");
	JSONArray parseArray = JSON.parseArray(string);
	List<Map<String, Object>> mList=new ArrayList<>();
	for (Object object : parseArray) {
		JSONObject parseObject2 = JSON.parseObject(object.toString());
		String picPath = parseObject2.getString("action_trace");
		String block_time = parseObject2.getString("block_time");
		JSONObject parseObject3 = JSON.parseObject(picPath.toString());
		String picPath2 = parseObject3.getString("act");
		JSONObject parsereceipt = JSON.parseObject(picPath.toString());
		String picPathreceipt = parseObject3.getString("receipt");
		JSONObject parsereceipt2 = JSON.parseObject(picPathreceipt.toString());
		String receiver = parsereceipt2.getString("receiver");
		JSONObject parseObject4 = JSON.parseObject(picPath2.toString());
		String picPath3 = parseObject4.getString("data");
		Map  map=new HashMap<String,Object>();
		JSONObject JSONquantity = JSON.parseObject(picPath3.toString());
		String quantity = JSONquantity.getString("quantity");
		String from = JSONquantity.getString("from");
		String to = JSONquantity.getString("to");
		String memo = JSONquantity.getString("memo");
		map.put("quantity", quantity);
		map.put("from", from);
		map.put("to", to);
		map.put("memo", memo);

// map.put(「block_time」、block_time)。
// map.put(「受信機」、受信機)
mList.add(マップ)
}
リストremoveDuplicate = removeDuplicate(mList)。
removeDuplicateを返します。
}

public static  List<Map<String, Object>> ToListMapJar(String result) {
	JSONObject parseObjectdata = JSON.parseObject(result);
	String stringdata = parseObjectdata.getString("data");
	JSONObject parseObject = JSON.parseObject(stringdata);
	String string = parseObject.getString("actions");
	JSONArray parseArray = JSON.parseArray(string);
	List<Map<String, Object>> mList=new ArrayList<>();
	for (Object object : parseArray) {
		JSONObject parseObject2 = JSON.parseObject(object.toString());
		String picPath = parseObject2.getString("action_trace");
		String block_time = parseObject2.getString("block_time");
		JSONObject parseObject3 = JSON.parseObject(picPath.toString());
		String picPath2 = parseObject3.getString("act");
		JSONObject parsereceipt = JSON.parseObject(picPath.toString());
		String picPathreceipt = parseObject3.getString("receipt");
		JSONObject parsereceipt2 = JSON.parseObject(picPathreceipt.toString());
		String receiver = parsereceipt2.getString("receiver");
		JSONObject parseObject4 = JSON.parseObject(picPath2.toString());
		String picPath3 = parseObject4.getString("data");
		Map  map=new HashMap<String,Object>();
		JSONObject JSONquantity = JSON.parseObject(picPath3.toString());
		String quantity = JSONquantity.getString("quantity");
		String from = JSONquantity.getString("from");
		String to = JSONquantity.getString("to");
		String memo = JSONquantity.getString("memo");
		map.put("quantity", quantity);
		map.put("from", from);
		map.put("to", to);
		map.put("memo", memo);

// map.put(「block_time」、block_time)。
// map.put(「受信機」、受信機)
mList.add(マップ)
}
リストremoveDuplicate = removeDuplicate(mList)。
removeDuplicateを返します。
}
/ **
*随机生成EOS账户名(钱包地址)
* @return
* /
パブリック静的文字列の正規表現(){
文字列の正規表現=「[-z1-5] {12}」。
Xegerジェネレータ=新しいXeger(正規表現)。
文字列結果= generator.generate()。
アサートresult.matches(正規表現)。
結果を返します。
}

public static  void main(String[] args) throws ParseException { 
	for (int i = 0; i < 25; i++) {
		String regex = regex();
		System.err.println(regex);
	}
	
	EosUtil eos=new EosUtil();
	//交易请求

//文字列の行為= eos.act(eos.from、 "xyyxyyxyy123"、 "0.1000 TOK"、 " 取引"、eos.privatekey、eos.transfer、eos.eosiotoken);
// System.out.printlnは(ACT)。
//クエリトランザクション
リストactionsJar = eos.getActionsJar( "hpnettest222"、 - 1、-100);
(文字列:actionsJar)用{
System.err.println( "トランザクション:"文字列+);
}
//クエリ残量
ストリングquerygetCurrencyBalance = eos.QuerygetCurrencyBalance( "xyyxyyxyy123"、eos.eosiotoken、eos.tokを);
System.err.println( "残量:" + querygetCurrencyBalance);
}
}

おすすめ

転載: blog.csdn.net/soul17999/article/details/91353361