Closed synctext closed 3 months ago
Progress Report
2020 work by Jetse: https://repository.tudelft.nl/islandora/object/uuid%3Ad3d56dd8-60ee-47f7-b23a-cdc6c2650e14 Spend 50% of time understanding the Joost Code in superapp please. Sprint goal: reliable digital Euro transfers
Sprint log (last week)
Comments. This is an important CBDC report from China
The People’s Bank of China (PBOC) attaches great importance to the research and
development of digital fiat currency. In 2014, it set up a task force to study digital fiat
currency, and its scope of research covered the issuance framework, key technologies,
issuance and circulation environment, and international experience.
ECB has started the task force and announced their "digital Euro" exploration. Still, Europe is 7 years behind.
For future direction the "stress testing" part could be the key to your results section. This towards 1 million transactions per second. Offline double spending is known open issue; no need to fix this. Tikkie API key: Joost has one @jwbambacht I believe. Is he also running a Blokzijl gateway locally? Calling it a "Stable Euro token" with gateway at AFM is possible alternative, CBDC requires central bank involvement.
For context, core banking systems on mainframes are from '70. Commercial ageing infrastructure. Replace after 50 years, trustworthy new infrastructure, uncompromising open source, no commercial banks with default risk, no single point of failure, and mobile-first.
Sprint goal: duplicate test-money infrastructure via test-Tikkie account that Joost has operational. Unit testing as next item.
First live digital Euro transaction?! Worldwide state-of-the-art, parties are mentioning cross-border CBDC; never actually achieved yet! Market analysis: all commercial offerings are needlessly complex, brittle, not disaster-proof (e.g. offline support), and therefore insecure.
Disaster-proof infrastructure is investigated in this master thesis (telecom thesis, not related to CBDC). The 1994 Northridge earthquake destroyed infrastructure. It might take 30 to 90 days to fully repair. Is there no digital money when there is no Internet? Thesis illustration:
Sprint log (until 15-10-21)
Possible thesis focus: make Wessel prototype ready for large-scale production usage + also fully decentralised. ideas: permissionless accounting. Everybody can undersign a transaction, remove single points of failure.
Practical next sprint demo: ability to create 4 times 1 Euro and send them to 4 contacts? (custom .APK)
Conceptual architecture: offline double spending problem is probably impossible to prevent. We assume everybody can double spend and estimate this likelihood with the counter-party risk assessment function. An offline verifier is a trustworthy node which checks and signs offline spending records. [Alternative architecture is preferred, give each minted coin a unique serial number. Then double spending is trivial to prove: fraudster signed away the same coin twice!]
No Internet is needed when using offline verifiers. What guarantees are offered by your system when two offline nodes using same trusted verifier? idea: If every counterparty of two transacting nodes inform the offline verifier we can guarantee detecting of double spending. (drawback: temporary central authority) {gateway == Kotlin == library == .apk?}
create_coin
, send_money
and transaction_history
.create_coin
, send_coin
and transaction_history
. Add install and cmdline instructions.create_coin "1"
create_coin "2"
create_coin "2"
send_coin "1" "6909e48cba1f77805"
send_coin "2" "6909e48cba1f77805"
send_coin "3" "6909e48cba1f77805"
transaction_history
quit
trustchainCommunity.createProposalBlock(BLOCK_TYPE, transaction, publicKey)
Leave protocol engineering and tuning for later. Future step, concurrency and improve protocol, https://github.com/KoningR/eurotoken/blob/6909e48cba1f77805185f9ca93ccdf677310fc61/src/main/kotlin/Application.kt#L187Progress:
HalfBlock
https://github.com/Tribler/kotlin-ipv8/blob/master/ipv8/src/main/java/nl/tudelft/ipv8/attestation/trustchain/payload/HalfBlockPairPayload.kt#L7
sh ./gradlew
Downloading https://services.gradle.org/distributions/gradle-6.1.1-all.zip
sh ./gradlew build
> Task :compileKotlin FAILED
e: /home/pouwelse/GITHUB/eurotoken/src/main/kotlin/Application.kt: (60, 20): Too many arguments for public final fun start(): Unit defined in nl.tudelft.ipv8.IPv8
FAILURE: Build failed with an exception.
Reason: unmerged code in IPv8 @InvictusRMC can hopefully help :smile: https://github.com/Tribler/kotlin-ipv8/pulls
Related CBDC work with instant payments: https://www.bis.org/publ/othp39.htm France: https://www.banque-france.fr/sites/default/files/media/2021/11/09/821338_rapport_mnbc-04.pdf https://www.jpmorgan.com/news/jpmorgan-central-bank-digital-currency-report German digital (IoT) Euro report: https://www.fpmi.de/files/fpmi/content/downloads/en/expertopinion/Studie_programmierbarer_Euro_en.pdf Google search query anything open source? true simple solutions? passport-grade ID for wallet? Fully non-custodian?
Month | activity |
---|---|
Jan | Define scope and read background, first prototyping; write problem description chapter and introduction |
Feb | Experiment plan and first iteration of prototype |
March | First round of real-world testing |
April | First round of incremental improvements |
May | Next rounds of real-world testing, identify issues and improvements |
June | Obtain measurement results and write chapters of report |
July | Finalize documantation |
a Federal zero trust architecture (ZTA) strategy, requiring agencies to meet specific cybersecurity standards and objectives by the end of Fiscal Year (FY) 2024
Read Joost's thesis.
Re-read this entire ticket.
Read about colored coins.
Made a separate repo for the plots.
Measured the EVA protocol with various batch sizes and found a HUGE performance increase.
Created a StressCommunity and analysed ipv8's sending routines.
The setup: a laptop sent UDP packets using ipv8 over Wi-Fi to a desktop connected via LAN.
Internal discussion about token sizes and throughput led to changing the units of the graphs to UDP packets (1472 usable unencrypted bytes) instead of 'tokens'.
When sending UDP without ACKs:
I measured the performance of EVA with default settings, which sometimes gave okay results (~1.5mbps) but regularly faced enormous outliers (~100kbps).
Conclusion 1: there needs to be a discussion regarding the size of a token, because it influences throughput drastically.
Conclusion 2: ipv8's UDP and signing functionality appears fast enough to scale to Eurotoken's demands. EVA's does not seem to. However, it must be mentioned that no extensive parameter search was done in this domain.
Conclusion 3: It appears DNB does not see the necessity of scaling to such enormous amounts of transactions as what we're aiming for. Also, I believe they would rather see a working, albeit slower prototype.
It might be that reusing the same payload accelerates transfer so much that somewhere a buffer fills up and many packets are dropped.
For a (slightly more) documented Wessel gateway refer to my fork. Do note that I am not maintaining this fork or the corresponding upstream repository.
repeating Grand storyline: we take the existing WesselEuro
, dump all the code, redo stuff, and get it a step close to production usage. For that testing is essential.
Suddenly there is a wealth of interesting results. Why? (reason: IPC was the first hard task, delayed everything) We learned a lot about performance, now try to wrap up "exploratory performance mode" in 1 sprint:
Focus for this sprint: single comparative performance plot for thesis :dart:
Related work by guardtime.com
during the test handled over 300,000 simultaneous payments a second and the money reached the payee in less than two seconds
https://www.eestipank.ee/en/press/experiment-central-banks-digital-euro-illustrated-new-possibilities-blockchain-technology-26072021data that identifies at least one entity in the hash tree path used for its initial registration in the infrastructure
TUDelft 2009 work invalidates: http://bittorrent.org/beps/bep_0030.htmla keyless digital signature service provider operates a top-level signature generation server that is in communication with lower level servers that may be operated by other entities, such as customers of the service provider.
81% of Chinese consumers used Alipay
, https://hbr.org/2020/09/why-hasnt-apple-pay-replicated-alipays-successIdeally, a cash-like CBDC should be fully decentralised, spendable offline, and have immediate deterministic transaction finality like cash.
Looked into adding QUIC as acknowledgement protocol.
○ The verdict: plenty of libraries but only 1 for JVM; not production-ready and poorly documented. Porting one of the other libraries seems like a major struggle (languages: C, Go, Rust).
Measured the performance of the repo's serializePacket() vs. my own 'faster' version, turned out to not be faster but comparable. Conclusion: do not switch.
○ For 10000 simple serializations, with sign took ~567591600ns for the old version and ~571432400 for the new version. Without sign took ~17777300ns for the old version and ~18118100ns for the new.
Sign: 567591600 571432400
No sign: 17777300 18118100
Reformatted the 'practical upperbounds graph' and 'cryptography' graph.
Wrote a short description of the setup and described the 'upperbounds' graph and the 'cryptograhy' graph.
Rewrote the introduction and problem description.
Added references and included them in the text. Added more 'formal' sources such as statistics from DNB.
Introduction: real bank insolvency stats. happens all the time: bank got bankrupt.
An important difference is that Blokzijl’s system is balance based and this scenario is token-based.
Problem descriptions are neutral. Not a single Blokzijl reference please. Build up the problem, then discuss timeguard and Blokzijl testing at 1 retail location (with photo) in related work. You can be very direct there: our work build fully upon this prior work. We aim to advance it further on the long road towards mass adoption.
We assume the reader to be familiar with this so-called ’double spending problem’
Explain this in a few lines. Is this the main scientific challenge you work on? Then you use this as the opening sentence in your problem description. Put science at the center, not Wessel :dart:
You central creative idea: Bitcoin provides a partial solution to the double spending problem by severely constraining transaction rates and introducing a consistent global broadcast (known for their failure to scale). Our work is based on similar avoidance, based on the legal system. We believe that without any assumptions the double spending is impossible to solve. An impossibility result is outside the scope of this work, but there has been prior work in this direction. Passport-grade ID.. used to... negative balance... We re-formulate and solve the double spending problem as follows: any transaction validated with your legally-binding digital signature while being offline is guaranteed to have finality for the counter-party with successful dissemination.
If validators are unreachable, Blokzijl’s system allows transactions to be made in a peer-to-peer fashion, deferring finality until the proper validator is available again.
is this section becoming mostly a Wessel tutorial? Solution: keep problem description neutral, add related work, and use a section called: "The Delft Euro" to explain The Wessel System. Sounds more sciency... In your "Architecture and Design" section you can explain why you do 'as-simple-as-possible': serial number, value, signature.
Examples. master thesis core: 10-pages IEEE format with max. 6 figures. (14 figure example https://arxiv.org/pdf/2203.00398.pdf) (15 figure example https://arxiv.org/pdf/2110.11006.pdf). Student report (5 ECTS): "Double spending prevention of digital Euros using a web-of-trust". "industry-grade self-sovereign identity" by Rowdy. You can find the 2021-2022 teaching and exam regulations here {see "Article 3 — The thesis project", note footnote "22)". Following footnote 22 we get to this list. It says nowhere that each needs a separate page, your IEEE format should contain all this}. Please make your thesis as much as possible into the standard scientific IEEE format, reduce your "overhead" pages to 1 cover page only {title+also preface!}. Note: offer your sponsoring governmental institute to list their logo on your front page.
III. EVALUATION In an attempt to improve Blokzijl’s proof-of-concept implementation, we found that it was unsuited for major expansion and opted to rewrite our own reference implementation in Kotlin.
What is the highest level goal? Our evaluation determines to which degree our work could serve as the foundation for the digital Euro. Cardinal requirement is secure offline usage.
"Performance analysis and experiments" section? Are we doing a 10:00am - 12:00am pub-based field experiment? Go beyond cmline digital Euro; superapp?
ING is not giving any credits to TUDelft, but they are trying also P2P payments :2nd_place_medal: (deployed 2021 with live IBAN linkage). Requires special radio chip and special Samsung permissions. Good GUI and roadmap to mass deployment, positioning as alternative against ABN Tikkie. Digital Euro needs to match this market-based innovation!
Implemented offline token transaction protocol.
and Double spending detection will be finished within a day.
Please first document this, discuss the details, process feedback for a superior design, and finally: finalise implementation!
New cryptography image:
This thesis is extremely relevant for society. Only open source and transparent technology, now full frontal competition against Amazon? https://www.ecb.europa.eu/paym/intro/news/html/ecb.mipnews220916.en.html https://worldline.com/en/home/pressroom/press-releases/2022/pr-2022_09_16_01.html
Worldline has been selected for the specific use case “peer-to-peer offline payments” of a digital euro, which focuses
on the payment between individuals.
As a leader in payment services, Worldline can rely on its expertise and assets to build a digital wallet supporting
the physical storage of funds that can be transferred without connectivity. The aim of the prototyping exercises is
to test how well the technology behind a digital euro integrates with various use-cases.
Worldline is sharing the common goal of the ECB and its partners and intends to be an active participants of
payment industry evolution, by contributing to strategic and potentially transformative projects such as the
digital euro. Its entire corporate product portfolio can be leveraged to deliver pilots and facilitate a successful
CBDC roll-out
You can use this as Figure 1 of your thesis to get the reader into a "this is really real" mode of thinking. https://www.ecb.europa.eu/paym/digital_euro/investigation/profuse/shared/files/dedocs/ecb.dedocs220428.en.pdf
This research focuses on exploring offline spending in CBDCs. Various other problems that trouble common CBDC design are discussed in Section VI and/or are left out of scope. ‘Offline spending’ in this context refers to the action of spending a CBDC without having a connection to its network. This is crucial in areas without a reliable internet connection or in case of network/system failure.
. Please make the Problem Description about the problem. No disclaimer is first paragraph. Clean and clear description please.A prominent example of currency that can be spent offline is cash. Cash, however, has various other drawbacks, which is reflected in its declining usage over the last years [6].
good opening lines, except that the reader should already known this from intro.With a toy example
or "illustrative example", what is more scientific?we assume the reader to be familiar with it
, unfriendly. "Addressing double spending is the core of this work".
The goal of this master thesis research is to take the necessary steps to mature Central Bank Digital Currency (CBDC). The level of maturity of CBDC targeted within this thesis is "proven technology, ready for large-scale deployment".
Stress testing and integration with the upcoming digital European identity is expected to be a significant part of this thesis work. All software will be open source and all gained technical expertise will be shared publicly. The permissionless ledger technology used will be Trustchain, this is formalised an IETF Internet Standard draft since 2018. The solution is required to be ledger agnostic.
This CBDC technology is required to be fully decentralised. Inefficient and wasteful "mining" is explicitly not allowed. No critical dependency on existing banking infrastructure may exist. No central points of failure or performance bottleneck can be present in the system architecture. Due to the critical nature of financial infrastructure, an "offline mode" must be supported. Transfer of money using QR-codes or some other mechanism must be supported together with fraud measures.
Delft University of Technology has already conducted small trails with digital Euros, supporting offline transactions. The work by Wessel Blokzijl resulted in a fully functional prototype, featuring real Euros, real retail testing, and integration with the IBAN banking system using a "Tikkie"-based gateway. Read the full master thesis here. Delft University of Technology is also a government partner for digital identity at passport-level. We have an operational open source prototype for digital identity, integrated with the European Commission EBSI infrastructure. By using EU EBSI this thesis aims for seamless integration of identity and money. See: https://github.com/Tribler/tribler/issues/6023 This existing self-sovereign identity work of Delft will be re-used.
Stress testing is also a key part of demonstrating the maturity of this technology based on open source and open standards. The requirement is horizontal scalability, feasible due to the inherent parallelism of the used Trustchain ledger. The ambitious target for experimental demonstration is 1 million transactions per second. This will provide the irrefutable proof required that a digital Euro can underpin the entire digital economy of Europe. The check-pointing mechanism used by Wessel might need replacing or improvement. Finally, a small field trail (4 people) would demonstrate the end-to-end feasibility and maturity level of this system. In the ideal case CBDC would utilise an IBAN account owned by the central bank to conduct several 1 Euro transactions in the wild. Possible joint experiments of other governments will be explored with actual money, but very low amounts. For instance, exchange of 1 actual Euro into an equivalent Singapore Dollars, e-Kroner (Sweden) or collaboration with the German Bundesbank to conduct end-to-end system testing.