Technical articles

Overview

We want to add 6 articles to the ICON Community site that take a first-principles approach to technical components of the blockchain industry. The articles are written in collaboration among technical writers and software engineers from Venture 23 and Sudoblock, and Cyrus Vorwald as an individual contributor.

Venture23 was recently formed as a US entity by long standing ICON community members with contributions in dApps like Balanced, Omm, CPS, ICON Bridge, BridgePay, and more.

sudoblock is in charge of the community tracker and associated API endpoints.

Cyrus oversees development of the ICON Bridge and several other grants from the ICON Foundation.

Benefit to ICON

The goal of this proposal is to add informational materials to icon.community/learn so that any reader can get a basic understanding of important algorithms used in Web3. This benefits ICON in moving its narrative to be more in line with the overall industry’s and uncovering new use cases for the platform.

We envision this proposal as the first in a series to allow an incoming user new to Web3 to be able to understand everything relevant for them to develop their own projects on ICON’s blockchain. This initial proposal is primarily focused on general topics not specific to ICON, and we intend to build on these topics in how they are implemented or can be implemented specifically on ICON in future proposals.

Articles

The target audience for these articles is a software developer. The content of these articles is subject to change. We may supplant these articles with anything else that we find relevant or important for the community to know around the above topics, such as additional articles, Jupyter Notebooks, or blackboard screencasts. Below are initial outlines of articles to give an idea of what topics will be covered.

Databases and distributed systems

  • Databases
    • Transactions
      • Transaction states
    • Consistency
      • ACID
      • CAP
    • Relational databases
    • Distributed ledgers
      • Permissioning
      • Blockchains
        • Blocks
    • Comparisons between relational databases and blockchains
  • State machine replication
    • Single-master replication
    • Multi-master replication
      • Consensus mechanisms
  • Concurrency
    • Serial execution
    • Parallel execution

Cryptographic primitives

  • Hashing functions
    • Security properties of hashing functions
  • Asymmetric key cryptography
    • Rivest–Shamir–Adleman (RSA) algorithm
    • Standard digital signature schemes
      • Elliptic curve cryptography
        • Elliptic Curve Digital Signature Algorithm (ECDSA)
          • Public key recovery
        • Accounts, wallets, and addresses
  • Merkle trees
    • Merkle proofs

Nodes and node networking

  • Full nodes
  • Light clients
  • Node networking
    • Node discovery
      • Handshake
    • Block syncing
    • Block broadcasting
    • Transaction broadcasting
      • Memory pool
    • Event ordering
    • Message exchanging
      • TCP
      • Request-response
        • Remote procedure call

Indexing

  • Introduction to indexing
  • Applications
    • Block explorer
    • Dapps
    • Analytics
  • How indexing works
    • RPC calls
    • Processing
    • APIs

Zero knowledge proofs

  • Cryptographic Primitives: Field, Group and Curves
  • Fast Fourier Transform and Merkle Tree Optimizations
  • Arithmetization: PLONK and R1CS
  • Polynomial Commitment Schemes: IPA, KGZ, FRI
  • Recursive Proofs Comparison

Java SCORE basics

  • Class definition of a smart contract
  • State variables and storage
  • Basic data structures
  • Annotations
  • Function declarations
  • Events, logs, and bloom filters
  • Context
  • Interacting with contracts via Javascript

Note on Java SCORE basics:

While Java SCORE has pretty solid documentation and examples that cover the above list, we feel that it is hard to follow for a beginner to get started with Java SCORE because there is no step by step guide of how to digest the information. We want to provide a clear explanation for an incoming user on important concepts to get started developing smart contracts with equivalents to Solidity.

Timeline

All articles will be delivered as pull requests to GitHub - icon-community/icon.community: The Official ICON Community Website.

Month 1

  • Databases and distributed systems

  • Cryptographic primitives

  • Zero Knowledge Proofs

  • Nodes

  • Java SCORE basics

Funding

Our cost is approximately $0.92 per word and articles would range from roughly 1,500 to 3,000 words depending on subject matter. We request a flat rate of $973.50 per article to the CPS, and cover the rest of the cost ourselves.

Articles

  • Databases and distributed systems: $973.50
  • Cryptographic primitives: $973.50
  • Nodes: $973.50
  • Indexing: $973.50
  • Zero knowledge proofs: $973.50
  • Java SCORE basics: $973.50