Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blockchain Engineering projects - class of 2020 #4863

Closed
synctext opened this issue Sep 26, 2019 · 17 comments
Closed

Blockchain Engineering projects - class of 2020 #4863

synctext opened this issue Sep 26, 2019 · 17 comments

Comments

@synctext
Copy link
Member

synctext commented Sep 26, 2019

Delft-DAO

What is a DAO? Within the coming decade the future of jobs, employment and the nature of the firm will change profoundly. Automation, AI, and robots will replace many of today's jobs. A new type of company is a company without any employees, without any machines or physical infrastructure. A Decentralized Autonomous Organizations, DAO, only exists in software. It goes beyond smart contracts, it is a complete company inside software. DAO development is still in the experimental stage.

Within this course you can create your very own autonomous organisation, the Delft-DAO. Learn to engineer a decentralised autonomous organisation, use the existing tools, and understand the security risks. The aim is to alter the nature of the firm in the Internet age, see the Nobel prize winning theory. Production cost become essentially cost-free. An organisation which exists purely in cyberspace. The Delft-DAO is designed to be the first sustainable DAO. How can we empower leaderless organizations? How can it earn money from manipulating bits?

Advisor: J.A. Pouwelse, TUDelft blockchain lab founder (weekly meetings on Wednesdays)

Several teams from the class will create running code (requirements for a passing grade..) for one of the following functionalities. Four teams together create the building blocks of the complete Delft-DAO.

  • TEAM: Create your own currency
    First step of building a DAO is creating money. This enables the Delft-DAO micro-economy. Mark Zuckerberg is creating his own currency for a few billion users, called "Facebook Libra". For this assignment you will also create your own currency in 10 weeks, almost from scratch! Obviously security and usability is somewhat limited. You will investigate methods for minting and transfer of tokens. You will designate yourself as "trusted nodes", able to generate cash. Mandatory starting point for your code is this Kotlin app
    • create finite number of tokens by a central authority
    • encode in Trustchain
    • transfer of tokens between two Android phones
    • wallet support and offline transfer
    • usable in the future as DAO ownership token or voting pass
    • align your work with the DAO voting team
    • Bonus: your currency is usable as a DAO token
  • TEAM: Distributed Democracy
    Key component of a DAO is controlling the fully automated firm through a voting process. A DAO is fully autonomous and has the integrated ability to govern itself. Self-governance is difficult to realise. Anonymous owners of the DAO coordinate their action through a voting process. Collective decision making by the stakeholders is known as a hard problem. Electronic voting is known to be difficult security problem. This is a challenging part of DAO engineering. Mandatory starting point for your code is this Kotlin app
    • Each DAO owner can propose what the firm will do next and spend its own money on
    • vote on Delft-DAO investment proposals
    • cryptographically guaranteed democracy
    • collective decision problem is core (voting thesis from 2017 and issue).
    • Proposed sprint breakdown
      • register identity
      • voting pass on Trustchain
      • collect votes
      • tally votes
  • TEAM: Freedom of Computing
    Freely executing code forms the core of the DAO. Improvement of smart contract execution model. This team will build the enabling infrastructure of the DAO. You will create Python-based code execution using the "Dapp" approach, decentralized applications. All executed code on the Delft-DAO is compressed down to a single hash. This code can be upgraded and can never revoked in a "rage-quit" incident; it probably is even "lawyer-proof". The mandatory starting point for your code with documentation in this master thesis.
    • create DAO computing layer
    • expand core with Python sandboxing
    • live Delft-DAO source code patching
    • demonstrate ability do live code updates at all online nodes
  • TEAM: 'terminator'
    You will create something deliberately disturbing: robots with collective learning ability; without human control. TUDelft created self-replicating software robots previously. You will create a key prototype that advances the state-of-the-art of self-replicating software, autonomy, and artificial intelligence. Your mission is not to terminate all human life.
    image
    Bitcoin is an essential technology for digital AI life: you can buy servers with Bitcoin. In prior work TUDelft has created CloudOmate. With CloudOmate you can buy servers with Bitcoin automatically. CloudOmate gives any computer the power to own money, replicate freely, no human can access that server, and no human can take that money away. It becomes an autonomous virtual entity. With cloudomate can even enhance it's own privacy and buy VPN networking autonomously. Next step is adding intelligence and collective learning to this autonomous Delft-DAO virtual entity. You will combine buying servers with Bitcoins with the another peak-hype technology of today: AI. You will create a basic intelligent entity, capable of self-replication and learning capability. For the learning side you can use deep re-enforcement learning engine in Python. See basic tutorial. Scientific challenge is sharing Q-function updates to facilitate collective learning. The mandatory starting point for your code. warning: this is a scientifically challenging problem; recommended only for honour or cum laude students
    • build a deep understanding of the distributed AI kernel
    • add ability to create Trustchain records to the distributed AI kernel
    • create Delft-DAO secure robot gossip using Trustchain
    • share information between self-replicating robots
    • distribute Q-function updates
    • integrate the distributed AI kernel into CloudOmate
    • Add Sporestack support in CloudOmate
    • create enabling deployment tooling
    • buy 10+ servers with TUDelft Bitcoins
    • demonstrate collective distributed learning ability
@MattSkala

This comment has been minimized.

@qstokkink

This comment has been minimized.

@stef-roos
Copy link

stef-roos commented Feb 5, 2020

A Decentralized Tipping System
Tipping artists and developers on the web, while frequently desired, is often complicated due to incompatible payment systems or high fees for international payments. Building a tipping system on top of a ledger has the potential to simplify the process. The XRP ledger is a very suitable substrate for such a tip platform as it has minimal transaction fees, which works well with the typical low amounts involved in tipping. A tipping platform should allow users to i) easily embed their payment information to be tipped in a website, ii) tip other users when encountering such payment information, and iii) set up automatic tipping when consuming tip-able content for the first time.
In this project, you will

  • review how transactions work in XRP clients

  • write a browser plugin for Firefox that realizes the described tipping platform

  • conduct a preliminary user study with some of your class mates to evaluate the usability of your platform

Deliverables: code, test cases, set up for user study, report

@stef-roos
Copy link

A Decentralized Bill Splitting Platform
There are many situation when people order together and one of them pays the bill. Two examples are ordering food or buying new appliances for a shared flat. The payer then has to ensure that the remaining people pay their share of the bill. The process might cause the payer to loss money and can be cumbersome, especially if people use different payment systems.
A payment platform based on a ledger will simplify the process. A suitable ledger for such a platform has to offer a low transaction fees, as transactions are usually low value and frequent. The XRP ledger designed by Ripple is well suited here both due its stability and low fees.
In this project, you will

  • define goals of a bill splitting platform (functionality, security, and performance)

  • design, implement, and test a bill splitting platform

  • conduct a short performance evaluation of the platform

Deliverables: code, test cases, configuration for performance evaluation, report

@stef-roos
Copy link

Log Inference in Ripple
A common method for finding bugs in complex communication levels is to build models on the logs and compare these logs to the theoretical model. Up to now, blockchains make little use of these techniques and hence have a high probability of having critical bugs. In this project, you will

  • review how Ripple’s consensus should work in theory

  • research tools for building models based on logs

  • select a suitable log level for Ripple’s validator nodes

  • apply the inference tool to real-world logs gained from TU Delft’s validator nodes

  • compare the model provided by the tool with the theoretical model

Deliverables: configuration for tool, changes to Ripple’s logs (if present), report

@stef-roos
Copy link

Improving Syscoin’s Transaction Propagation
Syscoin focused on fast payments using an alternative Directed Acyclic Graph (DAG) structure rather than a conventional blockchain. In order to allow for fast payments, the dissemination of transactions is critical and has been modified recently. In this project, you will

  • research protocols for fast transaction propagation

  • review the current Syscoin implementation

  • conduct a performance evaluation of Syscoin’s propagation algorithm

  • design, implement, and evaluate further improvements

You will have the chance to work closely with Syscoin’s development team to get an overview of the code and discuss your suggested changes.
Deliverables: Modified code, setup for performance evaluation, report

@stef-roos
Copy link

Hardware Wallet Integration in Syscoin
Hardware wallets provide a highly secure method for storing private keys. For usability even by non-experts, it should be easy to link the hardware wallet with the ledger. Syscoin, a system focussing on fast payments and interoperability between different currencies, aims to develop a web client for hardware wallets. In this project, you will

  • review Bitcoin’s javascript implementation for a hardware wallet interface

  • design, implement, and test a hardware wallet web client for Syscoin

  • conduct a short performance evaluation of the client

You will have the chance to work closely with Syscoin’s wallet development team.
Deliverables: Code, test cases, setup for performance evaluation, report

@zekierkin
Copy link

zekierkin commented Feb 5, 2020

OWNING AND MANAGING SHARED ASSETS

We have high expectations of the concept of shared assets in near future markets. For example: ten businesses with solar installations share a battery to store overproduction and to provide services on the energy markets. Or: five neighbors buy one car that is also rented to third parties. BTW an asset can also be code!

The advantages are: less investments than in the scenario of single ownership; and also less idle capacity to be expected. Eg: an individual car only ‘works for its living’ 5% of the time, while a shared one could make 50%.

For this assignment the assets you should think of have two key features:
• The assets can make money autonomously by providing a service (store energy, give a ride)
• The earnings of the assets flow back to their investors/stakeholders.

Blocklab’s interest is to develop a stand-alone application that will be used for energy hardware such as solar-panels and batteries, but please try to white-label it as much as much as possible so the app can be reused for other asset types.

Assignment: please develop a dApp to jointly own and manage a shared asset.

Features regarding the asset:

  • The actual money making of the asset is out of scope – i.e. its earnings have an oracle function for our dApp
  • Asset’s earnings flow back to stakeholders periodically
  • The asset will have a small own treasury that doesn’t flow back to the owners. It is in the wallet of the asset, controlled by the same group of owners

Features regading the owners:

  • There is no limit to the amount of owners;
  • Ownership can be transferred against market price – to other stakeholders ánd to newcomers;
    An example: if I have 25% of an assets under control, I can sell 15% of a specific assets to someone else.

Features on decision making:

  • Owners can jointly decide on allowing new shareholders in;

  • Owners can jointly decide on revenue flow configuration;

  • period

  • rules for maintaining / growing / harvesting the treasury

Feedback:

  • Show statistics on revenues and ROI;
  • An Interface would be awesome!

Tips:

  • Try to re-use as much as possible open-source code that is out there.

--Graphs, themes, inputs, etc.

  • Choose a blockchain protocol that supports deployment all of the above in smart-contracts or a chain with it’s own application logic (Substrate or Cosmos SDK).

@oguzhanersoy
Copy link

Efficient Transaction Advertisement Protocol

Existing blockchain solutions suffer from multiple broadcasting of the same transaction over the network. Each transaction is received by the nodes (miners) in the network twice: once during the advertisement, i.e. broadcasting of the transaction at the beginning, and once after the validation, i.e. broadcasting of the block including the transaction. While validation is essential since each node in the network stores every validated transaction, the advertisement does not need to be received by all nodes.

In [1], the authors propose a smart routing protocol that reduces the redundant transaction advertisement from the size of the network to a factor of the average shortest path length. The routing mechanism is built upon a specific type of consensus protocol where the round leader who creates the transaction block is known in advance.
An example of the consensus protocols is the Bitcoin-NG protocol [2].

In this project, you will

  • review the existing (draft) implementations of Bitcoin-NG
  • provide a complete implementation of Bitcoin-NG
  • implement the routing protocol given in [1]
  • test and compare the existing routing protocol with the one in [1]

Deliverables: Code, setup for test and comparison, report

References:
[1] Ersoy, O., Ren, Z., Erkin, Z. and Lagendijk, R.L., 2018, June. Transaction propagation on permissionless blockchains: incentive and routing mechanisms. In 2018 Crypto Valley Conference on Blockchain Technology (CVCBT) (pp. 20-30). IEEE.
[2] Eyal, I., Gencer, A.E., Sirer, E.G. and Van Renesse, R., 2016. Bitcoin-ng: A scalable blockchain protocol. In 13th USENIX symposium on networked systems design and implementation (NSDI 16) (pp. 45-59).

@oguzhanersoy
Copy link

Blockchain Application for the Circular Social Housing

The Circular Economy concept (CE) is one of the promising approaches to reduce the impact of linear economic activities where economic growth is decoupled from virgin resource consumption. In a circular economy, as opposed to the linear take-make-use-dispose model, there is no waste generated: waste becomes valuable products in the material loops.

Problem
Social housing organizations want to implement circular economy principles to manage their physical assets, namely, building materials, products, and components. Due to the long lifetime of the buildings, tracking materials throughout their lifetime and proving their provenance are tedious tasks with a centralized system.

Assignment
You are required to develop a blockchain-based asset management platform solution for tracing and recording every step of the material passports. Material Passport is an electronic identity of the material where a set of useful data describing the main characteristics of the material stored (Size, material composition, manufacturer, etc.).

References

@Tribler Tribler deleted a comment from MattSkala Feb 9, 2020
@synctext
Copy link
Member Author

synctext commented Feb 19, 2020

Delft-DAO integration steps:

Delft Definition of DAO:
"A DAO is an organisation that functions without any central point of control (decentralised), resistant to interference from any external party (autonomous), by operating based on the collective input of its stakeholders according to the rules encoded in its blockchain, but also heavily relies on hiring individuals to perform certain tasks that the automaton itself cannot do." -johan.

@synctext
Copy link
Member Author

synctext commented Mar 9, 2020

Delft-DAO grading & demo meeting: 23 April 11:45 (tentative).
Grand experiment direction for grading and wrapping up this course. Final goal: 1) load some Bitcoin on your wallet, 2) you automatically get some voting power, 3) you vote together on executable code of a Delft-DAO Dapp 4) this Dapp gives you a "some AI that understands market fluctuations" 5) somehow everybody votes positive on this 6) a new button appears within the Superapp

@synctext
Copy link
Member Author

synctext commented Mar 13, 2020

So finally, we need to plan the launch of your Delft-DAO with a splash. Please think about storyline and think of an brand name to replace boring "Delft-DAO" for Tweakers.net story.

Be creative! Such as: "Fully automated luxury communism" (yes, that's a political left-sided meme on an automated world with a 4-hour workweek; our app is designed to replace capitalism; we will take possession of the means of production, one app install at a time.)

@synctext
Copy link
Member Author

completely opposite view. Alternative of "deep adaptation" where humanity is dying, sort of doomsday p*rn.

@synctext
Copy link
Member Author

synctext commented Mar 25, 2020

Grand ToDo list till end of this course for all groups (not exhaustive!)

Course final goal in marketing terms: Delft-DAO is the first to combine various element into coherent architecture: collective ownership of Bitcoins, distributed apps on Android, Bitcoins for Dapp development and machine learning. The Delft-DAO dAPP execution model empowers any economic activity by combining identity, free group formation, democratic decision making, and scalable leaderless organisation.

ALL GROUPS

  • define the overall software architecture
  • How to integrate with superapp
  • How to integrate with other teams
  • API with Distributed APP
  • Superapp infrastructure:
    • Creating Delft-DAO instances
    • Vote on distributed app
    • Get paid for distributed app development
    • Install distributed app
    • AI Trade agent demo - distributed app

Team MultiSIG Create your own currency (Team II)

  • Anybody can start their own DAO with their rules
  • Anybody is free to join any DAO and participate within each democratic decision
  • DAO members determine the direction of their community by voting on Kotlin code
  • Nobody own any DAO, even the original founder is not special
    • you have no special privileges
    • you only set the initial parameter (entrance fee and voting quorum size)
  • Discovery mechanism for Delft-DAO instances
    • join live Trustchain plus Delft-DAO community
    • use block_type to identify transactions from Delft-DAO participants
    • send crawl_request for blocks in Delft-DAO community
    • scan, store and parse random incoming Trustchain blocks
    • Parse all Delft-DAO genesis blocks
    • Parse shared wallet information (duplicated in each block)
    • Remove the duplication of all public keys of all members
    • Show discovered Delft-DAO instances in GUI
    • Show discovered Delft-DAO instances in Superapp
  • Discovery mechanism for new vote
    • send to all member of Delft-DAO instance
    • stored all Trustchain public key
    • assume they are online
    • send a proposal block to each member individually (ToDo scale to millions, gossip)
  • malicious voting attack
    • everything needs to be check by everybody
    • describe the replace member attack (evil person joins, rigs the voting and excludes 1 specific existing member)
    • do not sign the MutiSig transaction for a new member if not all things are in order
  • Trustchain integration: serialised Bitcoin Multisig
  • Real Bitcoin are almost untouched (minor Tx costs)
  • integration started with democracy group, finalise in Week 4.8
  • what can demo inside a "BTC hello world" distributed app
    • When a distributed app is approved by voting, the developer is paid
    • By voting on a Kotlin app you also approve the payout of Bitcoin to developer
    • (optional) Not a one-shot primitive. Reserve bounty for Delft-DAO development in actual BTC into a isolated wallet.

Team Distributed Democracy

  • first version of integration API with MutiSIG Bitcoin, next version coming
  • Quality control: mocking and testing; but not easy
  • two type of votes
    • vote on new member in the Delft-DAO (automatically approve if interity is OK)
    • vote on new code addition in superapp / Delft-DAO
  • operational voting system
    • "cheat" and create a prototype with known weak security assumptions
    • Anybody can propose a vote on 1) magnet link to Bittorrent swarm with new Kotlin code 2) payout to their own wallet
    • use any_counterparty proposal block_type of Trustchain with your own custom validation function
    • transparent voting: we have a list of all public key participating and how they voted; visible in Bitcoin?
    • everybody crawls and exchanges the votes (e.g. collaborates) and sees the outcome
    • somehow we prevent deletion of undesired result (vote hiding, ignore this attack is it's a showstopper, but document)
    • Votes do not timeout, no end time; just meet the quorum
    • dealing with offline people it out of scope, above is already hard enough

Team Freedom of Computing team

  • Libtorrent is used to download Kotlin code and conduct live code injection. Offer complete end-to-end Kotlin Distributed App system.
  • Superapp module: https://github.com/tpapak01/FreedomOfComputing
  • smart contract demonstrator, based on FBase principles
  • what is the Delft-DAO Distributed App demo
  • Start with "Hello World" as demo of Delft-DAO Distributed App
    • Vote started on a magnet link
    • Delft-DAO vote is successful
    • Libtorrent is used to download new Distributed app
    • Live code injection and permanent install of new Distributed app
    • Every member obtains a new icon within Superapp
    • "Hello World" is started and a app-specific IPv8 community is joined
    • Each distributed app includes its own "website" for the GUI
    • This "website" can be viewed using integrated Webview in the Superapp
    • Create a "hello world" Distributed App demo
    • show live updates of how many people are in this community within the GUI
  • BONUS: use the code of another group as a demo with Webview GUI (like this team Blockchain Engineering Class of 2020: Delft-DAO - Create your own currency #5143 (comment))
  • BONUS: move beyond .apk binary distribution for security reasons

Team AI and create your own Dymbedollars

  • integrated AI technology (simple linear classifier)
  • observe the live market IPv8 community
  • however, there is no workload or traffic there!
  • create your own test bid/ask workload (Python or Kotlin)
  • no trustchain block creation, simple message broadcasting only to few dozen peers (will not scale, inefficient)
  • no special matchmaking agents, just match incoming ask with your own bid (or vise versa)
  • create bid/ask in the market community manually in GUI (helpful for testing)
  • display orderbook on the screen (build on Freedom of Computing team)
  • integrate transfer of cybercurrency QR-code one-shot operation
  • trading agent buy for this price, sell for this price
    • turn on/off on screen
    • give trade advise
    • turn on to do simplistic automatic trading
  • Testnet Bitcoins versus your own currency trading pair (e.g. Dymbedollars)

@synctext
Copy link
Member Author

@synctext
Copy link
Member Author

synctext commented Jun 11, 2020

Reclaiming The Internet for the social good

the class of 2020 blockchain engineering made some impressive software. A record number of top-grades have been given to students

Our software empowers citizens to take back control of The Internet. More specifically, we present the self-organising technology stack to take back The Internet. Who owns The Internet? The Internet is essentially private property, with few exceptions. Google, Facebook, Amazon, Apple, Tencent, and others operate the central components of our daily digital lives. For instance, we require permission from Google and Apple to publish software for mobile devices. Their monopoly power means no other meaningful method exists to reach billions of smartphone users with newly created apps.

Our work introduces a novel type of low-level network overlay and proof-of-principle zero-server social network. Our zero-server architecture offers various networking primitives. These serve as the basic building blocks for creating full fledged alternatives for the services of "trusted" third parties or Big Tech companies. These primitive increase in strength and cover identity management, communication, code execution and social software engineering.

A student development team at master-level with 17 members successfully created various non-trivial extensions to our zero-server architecture within 10 weeks. With their efforts the "superapp" presented here provides operational features such as online voting, shared ownership of money, fully automated decentralised marketplaces, and a Spotify alternative.

The full list of Superapp features, at an early proof-of-principle stage of software development:

  1. Secure address book. Obtain the public key of your friends with protection against man-in-the-middle attacks. This forms the identity layer with public key of your friends or businesses you interact with
  2. Universal communication using imperfect hardware. Secure end-to-end encrypted communication bypassing NAT boxes and other imperfect hardware. Connect to any address book entry in a secure manner. Secure messaging of any message size.
  3. Robust social fabric. Discover the current Internet address of your friends and connect to them. When your friends or trusted businesses come online they will form an end-to-end encrypted connection with you. Address churn by creating a social-based zero-server overlay with automated Internet address discovery, based on a UDP-puncturing DHT.
  4. Community formation. Everybody can freely start a community which can grow to any size. This is the core of our Decentralized Autonomous Organization. Key features are discovery of DAO communities and joining them.
  5. Community accounting. For each address book entry we track their contributions to the common good. Distributed bookkeeping with tamper-resilience using Trustchain
  6. Democratic governance. Community members can propose votes with proposition for financial transactions.
  7. Shared ownership of money. These communities of any size can democratically control any amount of money. By utilising Bitcoin Multisig we provide a community of any size the democratic control for any amount of money.
  8. Distributed Apps. Freely executing code forms the beating heart of the DAO. Improvement of smart contract execution model, specifically optimised for smartphones usage with runtime code injection and bypass the Google security model.
  9. Distributed markets. Marketplace with bid/ask orderbook which is distributed.
  10. Bounty-based software engineering. Any developer can seed a distributed app in Bittorrent and a DAO can vote on payout of bounty.
  11. Decentralised machine learning. Without any central point of control or performance bottleneck perform multi-dimensional curve fitting.
  12. Distributed music industry. Support artists by making them self-published, self-promoted, and self-sufficient in general. Replace the music industry offerings with free software. Grown into a full master thesis aiming to remove all proprietary infrastructure between artists and ears of listeners with cost-free ecosystem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

6 participants