Skip to content

Latest commit

 

History

History
158 lines (97 loc) · 6.9 KB

6.09 NEO Blockchain Challenge - Shenzhen.md

File metadata and controls

158 lines (97 loc) · 6.9 KB

NEO 区块链挑战赛 — 深圳

我们希望NEO的社区可以发展和合作。NEO是利用区块链技术和数字身份进行资产数字化,利用智能合约对数字资产进行自动化管理,实现“智能经济”的一种分布式网络。我们正在举办全球性的挑战赛,以促进NEO社区的增长。

挑战赛免费组册

挑战赛规则

  1. 可以使用各种方法获取指定高度时有NEO余额(不包含GAS)的地址及余额。
  2. 数据来源是NEO区块链主网,输入为区块高度,输出地址与对应余额的。csv文件。
  3. 获取的NEO地址不可以出现重复和遗漏。
  4. 使用最少时间者获胜。
  5. 使用开发语言不限。
  6. 最终解释权归NGD所有。

挑战赛地点 日期:

深圳市南山区科发路1号富利臻大厦3F*(近高新园地铁站)*

6月9日 09:30 ~ 6月10日 17:30

挑战赛主题:

快速检索NEO地址及余额

输入示例:

1001 注:输入为区块高度,区块高度从0开始,区块高度=区块数量-1

输出示例:

地址1,余额1 地址2,余额2 。。。 地址n,余额n

挑战赛奖励:

第一名 150GAS 第二名 100GAS 第三名 50GAS

挑战赛召集人及评审:

  • 陈志同

    NEO Global Development (NGD) 高级软件工程师 NEO团队早期成员、开发者、技术布道师。全栈工程师,国内知名 Windows Insider。编写了大量技术文档,影响并推动着众多技术爱好者参与到区块链技术研发和推广中。

  • 田力

    NEO Global Development (NGD) 高级研发经理 多年互联网项目开发与管理经验。区块链社区早期参与者。专注于各种算法与人工智能在区块链上的研究与应用。

比赛结果

  • 第一名: 王辉 、喻大圣 、陈圣聪(150 GAS)
    从创世区块开始,逐个扫描区块,在同步区块的过程中进行下列操作:

    1. 根据区块数据构造Block对象(开源项目NEO代码有Block类。
    2. Block对象有交易集合,分析交易集合输出(地址,余额。
    3. 下一个区块同样分析交易集合,但要加上前一个区块的结果。
    4. 内存中持有一份集合(地址,余额)的快照。
    5. 每一个区块都是对前一个区块的集合(地址,余额)进行新增地址余额、更新地址余额、消耗掉地址余额,更新内存状态的快照。
    6. 输出指定高度的内存快照。
  • 第二名:李竞业(100 GAS)

    1. 使用RPC的getblock和getrawtransaction方法,分析从创始块到指定高度的区块的UTXO数据。
    2. 由UTXO内做出分析,我们知道VIN和VOUT的关系。VIN是消耗之前地址的余额,VOUT是更新地址余额,程序里面使用数据库把所有VIN和的交易记录记下,VIN为负数,VOUT为正数。
    3. 分析完最后可以使用数据库的sum和groupby方式把最终结果拿到。
  • 第三名:
    没有人完成。


NEO Blockchain Challenge - Shenzhen

We hope that NEO's community can develop and cooperate together. NEO utilizes blockchain technology and digital identity to digitize assets and automate the management of digital assets using smart contracts. Using a distributed network, it aims to create a "Smart Economy". We are organizing a global competition to promote the growth of the NEO community.

Free registration of challenge

Challenge Rules:

  1. Various methods can be used to obtain the addresses of the NEO accounts with NEO balance (excluding GAS) and the specific amounts of balance when a height is designated.
  2. The data source is from the NEO blockchain main network. The input is the block height, and the output are addresses and the corresponding balances (csv file).
  3. The obtained NEO addresses cannot be repeated or omitted.
  4. Win with the least amount of time.
  5. The programming language is not limited.
  6. The final interpretation right belongs to NGD.

Challenge venue and time:

3F*, Fulizhen Building, No. 1, Kefa Road, Nanshan District, Shenzhen (near Gaoxinyuan Metro Station)

June 9th:09:30AM ~ June 10th: 17:30PM

Challenge theme:

Quickly query NEO’s addresses and balances

Input example:

1001

Note: The input is the block height, the block height starts from 0, the block height is the number of blocks -1

Output example:

Address 1, balance 1

Address 2, balance 2

......

Address n, balance n

Challenge rewards:

First prize:150GAS, Second prize:100GAS, Third prize: 50GAS

Challenge Convenors and Judges:

  • Chen Zhitong

    NEO Global Development (NGD) Senior Software Engineer

    An early member of the NEO team, a developer, and a technical evangelist. Full stack engineer, well-known Windows Insider in China. He has written a large number of technical documents, which have encouraged many technology enthusiasts to participate in the research and development and promotion of blockchain technology.

  • Tian Li

    NEO Global Development (NGD) Senior R&D Manager

    Years of experience in Internet project development and management. An early participant in the blockchain community. Focus on the research and application of various algorithms and artificial intelligence to the blockchain.

Competition Results:

  • First prize: Wang Hui, Yu Dasheng, Chen Shengcong(150 GAS)

    Starting from the genesis block, they scan the blocks one by one, and do the following during the process of sync block:

    1. Construct a block object based on block data (NEO code has block class).

    2. The block object has transaction sets and analyzes the output of transaction sets (address, balance).

    3. The next block also analyzes the transaction sets, but it adds the result of the previous block.

    4. A snapshot of the sets (address, balance) is held in memory.

    5. Each block is a snapshot of the newly added address balance, the updated address balance, the consumed address balance, and the updated memory state for the sets (address, balance) of the previous block.

    6. Output a memory snapshot of the specified height.

  • Second prize:Li Jingye (100 GAS)

    1. Use RPC methods of getblock and getrawtransaction to analyze the UTXO data from the genesis block to the block of the specified height.

    2. By analyzing the UTXO, we figure out the relationship between VIN and VOUT. VIN consumes the balance of the previous address. VOUT updates the balance of address. The program records all VINs and VOUTs transaction history in the database. VIN is negative while VOUT is positive.

    3. After the analysis, you can use the methods of sum and groupby to get the final result in database.

  • Third prize:

    No one finished.