consensus and smart contract development

Ultrain Launches Enterprise Mainnet Monitoring & Round Two of Testnet Participant Selection

Dear Ultrain community members,

We are excited to announce the launch of Ultrain’s mainnet monitoring page! Click the following link to see the operational status of our permitted mainnet including mining profitability, real-time consensus visualization, and existing mainnet users:

The addition of this visibility feature will further explain Ultrain’s consensus procedure and business model. Please visit the Mainnet Monitoring service (link provided above) and read the supporting article at These resources assist us to comprehend Ultrain’s token economic system, and understand how Ultrain’s model is based on a notion of servicing and empowering the fundamentals of the real economy.

Ultrain business development model is dependable and scalable; as the demand for blockchain services increases, Ultrain’s economic system will grow accordingly to meet the interests of early adopters, as well as ensure the healthy development of the entire business ecosystem.

Since the call went out for Ultrain’s second round of testnet miner recruitment, we received many applications from all over the world. Thank you all once again for the great interest!
The following is the list of successful applicants – welcome to the Ultrain testnet family and enjoy your preview of Ultrain’s technology.

1、[email protected]
2、[email protected]
3、[email protected]
4、[email protected]
5、[email protected]
6、[email protected]
7、[email protected]
8、[email protected]
9、[email protected]
10、[email protected]
11、[email protected]
12、[email protected]

(The list below represents the selected miners since December 26 2018 to January 13,2019)

Ultrain encourages everyone to continue submitting testnet applications, and stay tuned for more updates from the team!

Thank you all for your continued support of Ultrain.

Ultrain Team
2019. January 25th

read more

hacker marathon and regular meetup or online game

Ultrain Super Star DApp Contest Reveals Top Three Projects

Ultrain, together with Mars Finance, launched the first offline event for the Super Star Dapp Contest in Beijing on August 10. The event attracted 15 teams of developers, with each of them introduced the technical highlights of their projects and DApp usage scenarios.

As the world’s leading business chain, Ultrain has long been committed to the construction of a complete ecological community. Only with the combination of underlying technological infrastructure and ecological applications, and the resonation of developers and users, will the industry break down the walls and burst out with power that everyone can truly feel. Good developers are the cornerstone of the block chain world. In the context of the above, Ultrain and Mars Finance jointly organized the Super Star Dapp Contest, to provide better presentation opportunities and more support for outstanding developers. In just a few weeks, the contest has brought together top geeks from all over the country.

Emma Liao, co-founder of Ultrain

The offline event is reviewed by Zhao Lei, director of Huobi Lab Incubator, He Huan, founder of Nanshan Accelerator, Kyle Lu, founder of, Cai Minghui, founder of DAPPX, as well as Guo Rui, Emma Liao and Li Ning, co-founders of Ultrain. The jury made a comprehensive evaluation of the technical, product, commercial and other strengths of the teams’ work, and eventually picked out the top three winning teams. Their products are: a tool called ChainIDE, a game called crypto Three Kingdoms, and a pet rescue platform called Where The Dogs Go x Wandering Baby.

According to Wu Xiao, founder of ChainIDE, this tool is the world’s first multi-chain smart contract Integrated Development Environment (IDE), a product designed for agile development, able to help developers optimize the initial design environment process immediately, thereby saving costs. The tool has been successfully used in Libra, the first IDE to connect to Facebook Libra Move.

Wu Xiao, founder of ChainIDE

The second prize goes to crypto Three Kingdoms, a game developed overseas. Shi Pu, the founder, made a special trip back to Beijing from New York, working overtime for three days, just to show the best at the contest. As a game with the whole assets on chain, it is also a real game of non-gambling RPG. In this game, players aim to earn rare props and the Three Kingdom tokens by fighting NPC or other players, to upgrade their heroes and the equipment, meanwhile receiving dividends through a systematic mechanism.

Shi Pu, founder of crypto Three Kingdoms

The jury

The third award-winning project is the Wandering Baby, launched by Li Chen. It is a donation platform designed for stray dogs. With the help of the block chain’s openness and transparency, the identity of stray dogs and the relationship with their guardians are verified, and donations are recorded on chain as tokens. The entry and consumption records of each dog’s accounts are tracked in real time. While tokens are used to convert the donation money, and a certain amount of them are deducted as the operating expenses for the sustainable development of the platform. Where The Dogs Go has gained millions of monthly active users and five offline sites to divert to the Wandering Baby.
In addition, “Love on Chain” ,“Meal Introduction”, “Fanclub“ won the innovation award, the special award and the encouragement award respectively. Ultrain has given a huge bonus to the winning projects and will also guarantee all-round support in the future.

Li Chen, founder of the Wandering Baby

Left: CEO Guo Rui, co-founder of Ultrain;Right: Wu Xiao, founder of ChainIDE

Left: Shi Pu, founder of the crypto Three Kingdoms;Right: Emma Liao, co-founder of Ultrain

Left: CTO Li Ning, co-founder of Ultrain;Right: Li Chen, founder of the Wandering Baby

“The original aim of the Superstar Project is to gather a group of like-minded developers to build quality applications,” said Li Ning, CTO and co-founder of Ultrain. “Each contest is a brand-new start. We call on more people to all in block chain technology and make unremitting efforts to jointly establish a sustainable ecosystem.”

We believe that the three teams selected by the professional jury are high-quality projects with real sustainable operational capacity, willingness and rigid application value. With the continuous expansion of the block chain influence, and the continuous precipitation and development of technology, more and more top Dapps like this will cut a figure, and gradually develop into flagships of the industry. Ultrain will also continue to work with the media, developers’ communities, investment institutions and exchanges and other peers to further strengthen the landing of block chain technology and build a huge sustainable ecosystem.

read more

Industry dynamics and latest news about blockchain and currency

Ultrain Bi-Weekly Report(07.29–08.11)

Following is the biweekly report on the progress of the project from July 29th — August 11th, which contains two items: project development progress and community dynamic update. It is for the community members to check. Thank you for your attention.

Technology Update from Ultrain (7/29–8/11)

Ultrain’s Core Technology

UDP protocol application layer encapsulation completes development and enters the test joint debugging phase;

Continuously optimize the consensus agreement, discard expired messages, increase the node status auxiliary judgment mechanism, etc.;

Complete the black and white list operation control function to achieve specific account, contract, and operation fine control;

Upgrade and optimize the operation rate on the chain to achieve Dynamic and flexible setting;

Improve the preparation of the UGAS mapping of the main net and publish the mapping operation guide.

Ultrain’s Ecosystem

Australia traceable side chain Meisi Manor wine DAPP access dynamic map function, real-time display query frequency;

Digital asset issuance platform to complete UIP06 and UIP09 Ledger framework access work;

Binance DEX achieves BEP2 and ERC20 Token two-way conversion. Complete the open source preparation work.

Ultrain Developer Kit

U3.js is upgraded to 0.3.16, adding a transaction fee query interface;

Refactor the internal implementation of getAccoutsByKey method, optimize from node memory query to mongodb query;

UltrainOne upgrade to V2.3, mainly for performance optimization, including adding default loading image, loading effect and partial page loading time; The scene is flashed back; and the decision interface of UltrainOne is added to the Webview.

Ultrain’s Latest Community & Event Update

Ultrain officially starts the main net mapping!

Ultrain officially started the main net mapping on August 7. We offer a total of three kinds of mapping ways for community members to choose and operate, the specific operating instructions and precautions on the map,be sure to open the official website link ( to view . All users should complete their personal operation by August 30th , after that Ultrain will automatically complete the mapping on the main net. Thank you for your strong support for Ultrain, I hope everyone can successfully complete the main network mapping work!

Ultrain and Shanghai University of Finance and Economics’s Financial Science and Technology Research Institute reached scientific research cooperation

On August 9th, Ultrain officially announced that we established a strategic partnership with the Shanghai University of Finance and Economics, and has integrated our advantageous resources in their respective fields to promote the application landing of blockchain technology. And we signed a cooperation agreement already! Since then, we will cooperate in the direction of blockchain experiment support and curriculum co-construction, key technology research in blockchain, joint research and development, training support and resource sharing in the field of blockchain. Ultrain will open its public testing network for use in teaching and research experiments for Shanghai University of Finance and Economics, jointly develop virtual chain simulation-related experimental teaching projects and courses based on Ultrain, and bring the resources of both sides to conduct course training. Joint research on key technologies such as consensus game and zero-knowledge proof in the field of blockchain. On the Dapp landing, we will also share research results in the fields of finance, medical care, and public utilities. In addition, as a cooperative enterprise of the Shanghai University of Finance and Economics, the Institute of Financial Science and Technology, Ultrain will participate in the construction of its international laboratory in the Belt and Road.

The first phase of the Superstar program was perfect end, and the first three teams were finally announced.

At 2 pm on August 10, Ultrain and Mars Finance held the first offline selection of the “Superstar Program” DApp Developer Contest in Beijing. 15 top developers teams unveiled together to showcase their projects’ technical highlights and DApp. Complete for winner and full of crowd.

The three winning teams are: the tool category ChainIDE, the game project encryption three countries, the pet rescue platform dog to go x stray baby. ChainIDE founder Xiao Wu introduced that ChainIDE, as a tool project, is the world’s first multi-chain smart contract integration environment (IDE). The product design concept is designed for agile development and can quickly help developers optimize the process of initial construction for the design environment to save costs. This tool has been successfully used in Libra. It is the first IDE to access Facebook Libra Move.

The second winner of the competition is encrypted three countries which is a game project. The team is from overseas. The founder Pu Shi made a special trip from New York to Beijing to work overtime for three days to show the best performance in the contest. Everything in the game is on chain and it’s a non-gambling RPG game with real gameplay . In this game, the player’s goal is to compete with NPC or other players, earn rare props and coins, to enhance their heroes and equipment, and earn dividends through the system’s dividend mechanism;

The third winner is The stray baby, the founder is Chen Li. It is a lovely donation platform specially designed for stray dogs . With the open transparency of the blockchain, the relationship between the stray dog identity and the guardian are checked, and the donation is recorded in the form of token. Each wandering can be tracked in real time. The account and the consumption record of the dog account, which use the token to convert the donation amount, and deduct a certain proportion of the token as the operating cost of the platform to ensure the sustainable development of the product. ”Where the dog went” already has millions of monthly users and five offline sites to help the stray baby.

Ultrain goddess Emma was invited to Shanghai “2019 blockchain application landing” event

On August 11th , our goddess Emma went to Shanghai to participate in the “2019 blockchain application landing: education and games ” event, with Jadworks founder Richard Maaghul , game currency comparator CEO/ continuous entrepreneur /WOG eco founder Liu Nengqi Together to bring you a wonderful speech. Most of the elites at home and abroad, Emma introduced the technical advantages of Ultrain , and also conducted a profound exchange discussion with the blockchain industry.

Ultrain Co-Founder & CEO Rui Guo and the chief architect Yufeng Shen participate in the Baihua blockchain “cross-chain, let value flow freely” activity

On August 11th, our co-founder & CEO Rui Guo explained his insights of the industry in the “cross-chain, free value circulation” at the Baihua blockchain activity. The chief architect Yufeng Shen also had a discussion about cross-chaining in the round table forum.

Great progress in the Korean community recently

Ultrain has been continuing its operations in the Korean community. Recently, the Korean community has been very popular. The number of Korean Kakao group has reached 950, and the number of Telegram group has reached 350. The Ultrain articles have caused a lot of discussion in South Korea, and the number of views has continued to increase, reaching 11,000+! ( The Ultrain Korean team promotes the UltrainOne APP downloading by launching an event in the Korean local community and expects to increase the downloading volume to 1000 in the near future!

The above is the progress report of Ultrain from July 29th to Aug 11th, looking forward to more exciting contents after that!

read more

Dapp develop tools and high-quality application recommendations

How to build an end-to-end DApp on Ultrain - 2

Step2:Write DApp

There are two Dapps to be written, one is MiningDapp, the other is UDapp. We use the Javascript SDK U3.js to write the DApps. To be simple, we create the two DApps in one project.

Written by DApp

In WebStorm, create a new project -> Node.js Express App-> Template select Pug (Jade); modify the project name to CarbonDApp;

Click ‘Create’ to create a project

Import project dependent class library

Copy all the directories in node_modules in CarbonProject to the node_modules directory of CarbonDApp, and repeat the directory skipping without copying;
Copy the CarbonDApp/node_modules/u3.js/dist/u3.js file to the CarbonDApp/public/javascripts directory.

Modify the DApp server port

Since the default 3000 port is already occupied, you need to modify the server port of the DApp.

Open the bin/www file and find var port = normalizePort(process.env.PORT || '3000'); change 3000 to 3001

Create an account information browsing page

Create an index.html page in the public directory and add the following code to the page:

<html> <head> <meta charset="UTF-8"> <title>test</title> <link rel="stylesheet" href="/stylesheets/style.css"> <script src="./javascripts/u3.js"></script> <script> let u3 = U3.createU3({ httpEndpoint: '', httpEndpoint_history: '', broadcast: true, debug: false, sign: true, logger: { log: console.log, error: console.error, debug: console.log }, chainId:'2616bfbc21e11d60d10cb798f00893c2befba10e2338b7277bb3865d2e658f58', symbol: 'UGAS' }); async function getBalanceInfo() { let SYMBOL = 'CARB'; let account = 'ben'; const ben_balance = await u3.getCurrencyBalance({ code:'ben', symbol: SYMBOL, account: account }); document.getElementById("carbon_balance").innerHTML = '账户余额:'+ben_balance; const bob_balance = await u3.getCurrencyBalance({ code:'ben', symbol: SYMBOL, account: 'bob' }); document.getElementById("bob_balance").innerHTML = '账户余额:'+ bob_balance; const tom_balance = await u3.getCurrencyBalance({ code:'ben', symbol: SYMBOL, account: 'tom' }); document.getElementById("tom_balance").innerHTML = '账户余额:'+tom_balance; const tony_balance = await u3.getCurrencyBalance({ code:'ben', symbol: SYMBOL, account: 'tony' }); document.getElementById("tony_balance").innerHTML = '账户余额:'+tom_balance; const jerry_balance = await u3.getCurrencyBalance({ code:'ben', symbol: SYMBOL, account: 'jerry' }); document.getElementById("jerry_balance").innerHTML = '账户余额:'+tom_balance; const jack_balance = await u3.getCurrencyBalance({ code:'ben', symbol: SYMBOL, account: 'jack' }); document.getElementById("jack_balance").innerHTML = '账户余额:'+tom_balance; } getBalanceInfo(); //transfer(); </script> </head> <body> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>CarbonCoin发行方</h1> <p>账户:ben</p> <p>描述:进行CarbonCoin发行的发行方,持有所有未分配的CarbonCoin</p> <p id="carbon_balance"></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>节能设备1</h1> <p>账户:bob</p> <p>描述:通过节能产生CarbonCoin的节能设备1</p> <p id="bob_balance"></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>节能设备2</h1> <p>账户:tom</p> <p>描述:通过节能产生CarbonCoin的节能设备2</p> <p id="tom_balance"></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>航空公司C</h1> <p>账户:tony</p> <p>描述:大型航空公司,化石能源使用大户</p> <p id="tony_balance"></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>汽车制造商D</h1> <p>账户:jerry</p> <p>描述:大型汽车制造商,化石能源使用大户</p> <p id="jerry_balance"></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>CarbonCoin销毁账户</h1> <p>账户:jack</p> <p>描述:用于CarbonCoin销毁的账户,持有所有销毁的CarbonCoin</p> <p id="jack_balance"></p> </div> </body> </html> Start the DApp service, test the page
In the npm interface, double click the start button

After the server is successfully started, visit and the following page appears:

It can be seen that the issuer ben account holds 10 million of all CARB Tokens issued; other accounts have not yet held CARB Token;

Create a mining.html page

Mining.html page, energy-saving device 1 and energy-saving device 2 send the calorie value generated in the first 30 seconds to the energy smart contract every 30 seconds, and redeem CarbonCoin;

Create a mining.html page in the public directory, enter the following code:

<html> <head> <meta charset="UTF-8"> <title>test</title> <link rel="stylesheet" href="/stylesheets/style.css"> <script src="./javascripts/u3.js"></script> <script> let u3_bob = U3.createU3({ httpEndpoint: '', httpEndpoint_history: '', broadcast: true, debug: false, sign: true, logger: { log: console.log, error: console.error, debug: console.log }, chainId:'2616bfbc21e11d60d10cb798f00893c2befba10e2338b7277bb3865d2e658f58', keyProvider: '5JoQtsKQuH8hC9MyvfJAqo6qmKLm8ePYNucs7tPu2YxG12trzBt',//bob's private_key symbol: 'CARB' }); let u3_tom = U3.createU3({ httpEndpoint: '', httpEndpoint_history: '', broadcast: true, debug: false, sign: true, logger: { log: console.log, error: console.error, debug: console.log }, chainId:'2616bfbc21e11d60d10cb798f00893c2befba10e2338b7277bb3865d2e658f58', keyProvider: '5KXYYEWSFRWfNVrMPaVcxiRTjD9PzHjBSzxhA9MeQKHPMxWP8kU',//tom's private_key symbol: 'CARB' }); function wait(ms = 0) { return new Promise(res => setTimeout(res, ms)); } function randomFrom(lowerValue,upperValue) { return Math.floor(Math.random() * (upperValue - lowerValue + 1) + lowerValue); } async function mining() { let owner_account = 'ben'; const tr_bob = await u3_bob.contract(owner_account); const tr_tom = await u3_tom.contract(owner_account); // let amount = U3.format.UDecimalPad(2000,4); let heat_bob = randomFrom(15000,20000); let heat_tom = randomFrom(15000,20000); await tr_bob.recordHeat(heat_bob,{ authorization: [`[email protected]`] }); await tr_tom.recordHeat(heat_tom,{ authorization: [`[email protected]`] }); var d=new Date(); var t=d.toLocaleTimeString(); document.getElementById("bob_log").innerHTML = 'time :'+t+', heat value :'+ heat_bob; document.getElementById("tom_log").innerHTML = 'time :'+t+', heat value :'+ heat_tom; } mining(); var int=self.setInterval("mining()",30*1000); </script> </head> <body> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>节能设备1</h1> <p>账户:bob</p> <p>描述:通过节能产生CarbonCoin的节能设备1</p> <p id="bob_log"></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>节能设备2</h1> <p>账户:tom</p> <p>描述:通过节能产生CarbonCoin的节能设备2</p> <p id="tom_log"></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <button onclick="int=window.clearInterval(int)">stop</button> </div> </body> </html>

Go to and the following page appears:

There are two things to note here.

When sending data to the energy smart contract, you need to hold the private key of the account before you can sign and send it. In order to simplify the programming, the private key is directly written to the webpage. In the actual program, the private key needs to be protected and hidden.

To simplify the writing, the Bob and tom DApp programs are written directly to a page. Actually, they should be two DApp program instances, which are running on two devices respectively.

Now our energy-saving equipment can already send data to the smart contract, and after the energy smart contract receives the data, it will pass the data to the operator server, and the operator server will call the energy smart contract again to exchange carboncoin. So we need to establish EnergyServer;

Step3: EnergyServer

Establish event monitor and handle events

In this section, we will deal with the above calorific value data upload event.

1.1 Establish listener event server code

In the bin directory of the CarbonDApp project, create a new file msgBroker.js and enter the following code.

const { createU3 , format} = require('u3.js/src'); const http = require('http'); const port = 3002; let u3 = createU3({ httpEndpoint: '', httpEndpoint_history: '', broadcast: true, debug: false, sign: true, logger: { log: console.log, error: console.error, debug: console.log }, chainId:'2616bfbc21e11d60d10cb798f00893c2befba10e2338b7277bb3865d2e658f58', keyProvider:'5JbedY3jGfNK7HcLXcqGqSYrmX2n8wQWqZAuq6K7Gcf4Dj62UfL',//ben's private key symbol: 'UGAS' }); let server = http.createServer((request, response) => { const { headers, method, url } = request; console.log(method); console.log(url); let body = []; request.on('error', (err) => { console.error(err); }).on('data', (chunk) => { body.push(chunk); }).on('end', () => { body = Buffer.concat(body).toString(); console.log("received msg:", body); if (body != null && body.trim()!="") { var obj = JSON.parse(body); let heatValue = JSON.parse(obj[1]).heat.split(",")[0]; let account = JSON.parse(obj[1]).heat.split(",")[1]; exchangeCarbonCoin(account,heatValue); } response.on('error', (err) => { console.error(err); }); response.statusCode = 200; response.setHeader('Content-Type', 'application/json'); response.write("ok"); response.end(); }); }); server.keepAliveTimeout = 0; server.timeout = 0; server.listen(port, function () { console.log((new Date()) + " Server is listening on port " + port); }); function wait(ms = 0) { return new Promise(res => setTimeout(res, ms)); } async function exchangeCarbonCoin(account,heat) { let SYMBOL = 'CARB'; let code = 'ben'; const tr = await u3.contract(code); let heatValue = format.DecimalPad(heat,4); const result = await tr.exchangeCarbonCoin('ben', account, heatValue+' ' + SYMBOL, 'test', { authorization: [`[email protected]`] }); let tx = await u3.getTxByTxId(result.transaction_id); while (!tx.irreversible) { await wait(1000); tx = await u3.getTxByTxId(result.transaction_id); if (tx.irreversible) { console.log(tx); break; } } }

The code establishes a service on port 3002. After the energy-saving device uploads its calorific value, the smart contract will send the energy-saving device to the service to upload the calorific value data. The service calls the exchangeCarbonCoin method of the energy smart contract to exchange the CarbonCoin.

1.2 Establish a listener event server startup script

Open the CarbonDApp/package.json file and add the following code to the scripts property: "event": "node ./bin/msgBroker"

1.3 Start the listening server

Refresh the npm window with the ‘event’ option

Double-click event to complete server startup

1.4 Register event monitoring mechanism on the chain

Query the internal network address of the machine through the ifconfig command, for example:

In the CarbonProject/test directory, create the registerEvent.js file; enter the following code in the file

const U3Utils = require('u3-utils/dist/es5'); const { createU3, format, listener } = require('u3.js/src'); const config = require('../config'); const chai = require('chai'); require('chai') .use(require('chai-as-promised')) .should(); const should = chai.should(); const expect = chai.expect; const assert = chai.assert; describe('Test cases', function() { it('event register', async () => { let account = 'ben'; const u3 = createU3(config); await u3.registerEvent(account, 'http://'); U3Utils.wait(1000); }); it('event unregister', async () => { let account = 'ben'; const u3 = createU3(config); await u3.unregisterEvent(account, ' http://'); U3Utils.wait(1000); }); });

Note that the registered address is modified to be the internal network address of the machine, and cannot be used.
Run the event register test case to complete the event registration;

1.5 Test calorie value for CarbonCoin function

Visit page, every 30 seconds, both bob and tom will randomly send a random value between 15000 and 20000 as the calorific value to convert the smart contract to CarbonCoin;
Visit and refresh the page, you can find that the CarbonCoin account of bob and tom is increasing every 30 seconds;

Step4:Improve DApp functionality

Add transfer function

After the energy-saving equipment acquires CarbonCoin, it can sell CarbonCoin to the enterprise, such as airlines, etc. The simple embodiment is that the equipment account can be transferred to the corporate company account;

Open the /CarbonDApp/index.html page and add the code

1.1 U3 object used when establishing the transfer

let u3_bob = U3.createU3({ keyProvider:'5JoQtsKQuH8hC9MyvfJAqo6qmKLm8ePYNucs7tPu2YxG12trzBt',//bob's private key }) let u3_tom = U3.createU3({ keyProvider:'5KXYYEWSFRWfNVrMPaVcxiRTjD9PzHjBSzxhA9MeQKHPMxWP8kU',//tom's private key })

1.2 Add the js code of the transfer to call the corresponding smart contract method

async function sendCoin(from,to){ let SYMBOL = 'CARB'; let code = 'ben'; let coins = U3.format.DecimalPad(this.randomFrom(100,500),4); if (from == 'bob'){ const tr = await u3_bob.contract(code); const result = await tr.transfer(from, to, coins + ' ' + SYMBOL, 'sendCoin', { authorization: [`[email protected]`] }); let tx = await u3_bob.getTxByTxId(result.transaction_id); while (!tx.irreversible) { await wait(1000); tx = await u3_bob.getTxByTxId(result.transaction_id); if (tx.irreversible) { alert("bob send coin success:"+ coins); break; } } } else if (from == 'tom'){ const tr = await u3_tom.contract(code); const result = await tr.transfer(from, to, coins + ' ' + SYMBOL, 'sendCoin', { authorization: [`[email protected]`] }); let tx = await u3_tom.getTxByTxId(result.transaction_id); while (!tx.irreversible) { await wait(1000); tx = await u3_tom.getTxByTxId(result.transaction_id); if (tx.irreversible) { alert("tom send coin success:"+ coins); break; } } } }

1.3 Add a call to the sendcoin() method on the page, update the following code

<div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>节能设备1</h1> <p>账户:bob</p> <p>描述:通过节能产生CarbonCoin的节能设备1</p> <p id="bob_balance"></p> <p><a href="#" OnClick="sendCoin('bob','tony')">给航空公司C转账</a></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>节能设备2</h1> <p>账户:tom</p> <p>描述:通过节能产生CarbonCoin的节能设备2</p> <p id="tom_balance"></p> <p><a href="#" OnClick="sendCoin('tom','jerry')">给汽车制造商D转账</a></p> </div>

1.4 Access the page and test the function

Visit:, click the "Transfer to the airline C" button, wait for a period of time (up to about 10 seconds, confirm the time for the Ultrain transaction), the following prompt appears, indicating the transfer success.

Add a company to convert CarbonCoin to a charity point function

By converting CarbonCoin into charitable points, the company makes its own contribution to reducing carbon emissions and enhances its reputation:

Open the /CarbonDApp/index.html page and add the code

2.1 U3 object used when establishing point redemption

let u3_tony = U3.createU3({ keyProvider:'5KbHvFfDXovPvo2ACNd23yAE9kJF7Mxaws7srp6VapjMr7TrHZB',//tony's private key }) let u3_jerry = U3.createU3({ keyProvider:'5JFz7EbcsCNHrDLuf9VpHtnLdepL4CcAEXu7AtSUYfcoiszursr',//jerry's private key })

2.2 Add the redeemed js code to call the corresponding smart contract method

async function exchangeScore(account){ let SYMBOL = 'CARB'; let code = 'ben'; let to = 'jack'; let coins = U3.format.DecimalPad(this.randomFrom(10,50),4); if (account == 'tony'){ const tr = await u3_tony.contract(code); const result = await tr.exchangeScore(account, to, coins + ' ' + SYMBOL, 'sendCoin', { authorization: [`[email protected]`] }); let tx = await u3_tony.getTxByTxId(result.transaction_id); while (!tx.irreversible) { await wait(1000); tx = await u3_tony.getTxByTxId(result.transaction_id); if (tx.irreversible) { alert("tony buy score success:"+ coins); break; } } } else if (account == 'jerry'){ const tr = await u3_jerry.contract(code); const result = await tr.exchangeScore(account, to, coins + ' ' + SYMBOL, 'sendCoin', { authorization: [`[email protected]`] }); let tx = await u3_jerry.getTxByTxId(result.transaction_id); while (!tx.irreversible) { await wait(1000); tx = await u3_jerry.getTxByTxId(result.transaction_id); if (tx.irreversible) { alert("jerry buy score success:"+ coins); break; } } } }

2.3 Add a call to the exchangeScore() method on the page, update the following code

<div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>航空公司C</h1> <p>账户:tony</p> <p>描述:大型航空公司,化石能源使用大户</p> <p id="tony_balance"></p> <p><a href="#" OnClick="exchangeScore('tony');return false;">购买公益积分</a></p> </div> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>汽车制造商D</h1> <p>账户:jerry</p> <p>描述:大型汽车制造商,化石能源使用大户</p> <p id="jerry_balance"></p> <p><a href="#" OnClick="exchangeScore('jerry');return false;">购买公益积分</a></p> </div>

2.4 Access the page and test the function

Visit:, click the "Buy Charity Points" button, wait for a period of time (up to about 10 seconds, confirm the time for the Ultrain transaction), the following prompt appears, indicating that the points are successfully redeemed. At the same time, you can see the number of CarbonCoins destroyed in the CarbonCoin destruction account at the bottom of the page.

Query the public welfare points exchange history

By enquiring the redemption history of charity points, we can establish a ranking of corporate charity points.

3.1 Creating a page

In the CarbonDApp/public/ directory, create a new leaderboard.html and enter the following code:

<html> <head> <meta charset="UTF-8"> <title>leaderboard</title> <link rel="stylesheet" href="/stylesheets/style.css"> <script src="./javascripts/u3.js"></script> <script> let u3 = U3.createU3({ httpEndpoint: '', httpEndpoint_history: '', broadcast: true, debug: false, sign: true, logger: { log: console.log, error: console.error, debug: console.log }, chainId:'2616bfbc21e11d60d10cb798f00893c2befba10e2338b7277bb3865d2e658f58', symbol: 'UGAS' }); function wait(ms = 0) { return new Promise(res => setTimeout(res, ms)); } async function getLeaderboard() { let owner_account = 'ben'; const tr = await u3.contract(owner_account); const result = await u3.getAllTxs(1,10000000,{"":"exchangeScore"},{_id:-1}); //console.log(result); let content = ''; for ( let i = 0 ;i< result.results.length;i++){ content = content + '<tr><td>'+ result.results[i].actions[0].data.from+":"+result.results[i].actions[0].data.quantity +'</td></tr>'; } document.getElementById("leaderboard").innerHTML = content; } getLeaderboard(); </script> </head> <body> <div style="padding:8px;border:1px solid #96c2f1;background:#eff7ff"> <h1>leaderboard</h1> <table id="leaderboard"> </table> </div> </body> </html>

We use the u3.getAllTxs(1,10000000,{"":"exchangeScore"},{_id:-1}); method to query all redemption transactions and print their specific data to the page.

3.2 Run page

Visit and you can see the following page:

Here is a history of all points redemption.


This tutorial system describes how to write an end-to-end web version of the DApp application. Although it has been simplified in the process of writing, it generally describes the overall picture of DApp application development, developers can do the basis of this framework. Enrich and improve your DApp application.

About developing DApp on iOS and Android, you can integrate u3.js into the corresponding hybrid Native development framework, and the principle is the same as the web version DApp.

read more



以下为 6 月 17 日- 6 月 30 日项目进展双周报,包含#项目技术进展#及#社区动态更新#两项内容,供社区成员们查看,感谢大家对我们一直以来的热切关注!



• Ultrain 内核





澳洲侧链部署以及支持币安 DEX交易所对接。

• Ultrain 智能合约及开发




• Ultrain 开发者套件

发布UltrainOne v2.2,支持多钱包管理,钱包密码修改及若干体验优化;

整理《Ultrain开发者手册》与《Ultrain DAPP接入规范》,待发布;




• UltrainOne APP新版上线!


• 社区精彩文章大放送!


• 跨链哪家强,跨洋大辩论!

6月20日晚,前 CoinDesk 亚洲战略发展编辑田川邀请到了Ultrain首席架构师沈宇峰和澳洲一线 crypto 投资机构 Crypto SA 联合创始人 /Algorand 澳洲大使 Yawn 展开了一场精彩的跨洋技术干货大辩论,重点分析近期大火的跨链话题,横向比较Ultrain、Cosmos、Polkadot在方方面面的异同。直播内容丰富、干货满满,欢迎扫二维码阅读直播内容实录!

• 超脑小象海报社区投票


• 超脑入选硅谷巨头加速器Plug and Play!

继微软加速器、亚马逊云创计划之后,Ultrain 再次成功入选硅谷巨头加速器 Plug and Play 物联网领域加速营!6 月 25 日,Plug and Play 中国在深圳开始举行“ Plug and Play 中国 2019 夏季峰会暨‘深’有新意创新启航”活动,深圳市政府有关部门的领导、来自日本和德国等国家的企业家代表、来自国内移动出行、金融科技、地产科技、物联网等领域的数十家知名大企业和创业公司代表、深耕创新理论研究的学界代表等,共计 200 余位嘉宾出席此次活动。Ultrain 生态副总裁 Samuel 肖颖浩也代表 Ultrain 进行了路演,并与在场众多知名大企业代表进行了深度交流和资源共享。详情请戳超脑入选硅谷巨头加速器Plug and Play!

• Ultrain 荣获「年度金融科技行业引领奖 」!

6月27日,Ultrain联合创始人&CEO 郭睿受邀出席了由上海财经大学金融科技研究院、聚菁会举办的第五届亚洲未来数字金融创新大会,并代表 Ultrain 领取了由大会颁发授予的「年度金融科技行业引领奖 」,此外,郭睿还于大会中进行了题为「基于区块链的未来商业基础设施」的演讲,获得了在场观众的一致认可!详情请戳Ultrain 荣获「年度金融科技行业引领奖 」!

以上便是 Ultrain 6 月 17 日至 6 月 30 日的项目进展,敬请期待此后的更多精彩内容!

read more


超脑超星计划推进 十五支队伍并驱争先






Deswap交易协议: 团队来自于南京,DeSwap是一个去中心化的代币兑换系统,Ultrain上的交易代币协议。设计简便,交易快捷,为小规模代币提供流动性。无需用户挂单,也可以随时买卖。适用于超脑的UGAS和积分系统

海洋大亨: 团队来自于杭州,海洋大亨是⼀款模拟社交的游戏,游戏中融合鱼市买卖系统,模拟现实生活中,买鱼饵,造鱼钩,钓鱼到卖金币,形成商业闭环拥有组队系统,可邀请好友一起钓鱼,也可以随机匹配陌⽣人,在休闲娱乐的同时,也可以扩大自身的交际圈。

加密三国:团队来自于海外,加密三国志是一款全资产上链的游戏,具有真正游戏性的非博彩RPG 类游戏。在这个游戏中,玩家的目的是通过与 NPC或其他玩家对战,赚取稀有道具和三国币,用于提升自己的英雄和装备,并通过系统的分红机制赚取分红。

奶茶供应链: 团队来自于上海,该Dapp主要功能是记录一杯奶茶从生产到上市的整个过程中的信息。此Dapp有效提高奶茶在生产到上市过程中的可溯源性,公开性。可建立商家的信誉,提高消费者的信赖。建立一个更和谐健康的生态。

GBT预言: 团队来自于杭州,用户在该DAPP中可使用相应的代币进行预言,预言将扣除部分代币注入奖励池账户,为日后运营做基础。而大部分的代币将注入瓜分奖池账户,预言成功根据所投入代币比例瓜分奖池中代币,预言失败,则扣除投入代币。

IDE: 团队来自于南京,“ChainIDE”是全球第一个多链的智能合约集成环境(IDE), 能够快速的帮助开发者搭建初始的设计环境和节约成本。是一款优异的开发工具。


Last Trip “最后的旅途”:团队来自于南京, 是一款基于区块链的冒险解谜类游戏,玩家在游戏中是一个书写者。通过玩家各自的方式,撰写一本自己的《神曲》。游戏中包含了不同的文化,宗教,人文,故事,哲理。并将7种不同的画风,横跨欧亚非的哲理故事,数百种独立剧情,无数选择,人性,思考,迷雾,探索共融一炉。其完美结合区块链特性,将玩家的每一段旅途上链,并且化身为NPC,影响其他玩家的故事线。


餐引人:团队来自于杭州, 餐引人是基于区块链餐饮商家的一站式服务平台,链接小微餐饮商家的绝大多数服务商。以区块链技术为基础,力争打造“去中心化的真正可信的餐饮商家服务平台。

GC: 团队来自于杭州,作为垃圾分类的DAPP,一个有偿的知识分享平台,将代币和垃圾分类相结合,并逐渐形成垃圾分类知识库,设计简洁,功能清晰,是一款结合生活、环保的实用性DAPP。

Delibrary: 团队来自于南京, 是一款闲置图书共享领域的DAPP,拥有灵活经济激励模型,让更多的旧书籍放大其闲置图书的功效,可通过闲置图书的赠送、交换、出租和出售等操作实现资源的共享,并利用智能合约实现自动业务逻辑。

流浪宝贝: 一款专为流浪狗设计的DAPP,结合区块链,让用户的每一笔捐助触及狗狗本身。借助区块链,完成流浪狗身份溯源,监护人关系和捐助交易与消费流水。让流浪狗不在流浪!

read more





read more











read more