Markdown edits

parent 67501644
......@@ -441,7 +441,7 @@ compsem: cmdsig @ IF ')' parse 2drop EXIT THEN
:noname ( -- )
>in @ >r ')' parse ." ( " type ." )" cr r> >in ! ; is doc(gen
:noname ( n "name" -- )
." + " dup hex. >in @ >r parse-name type r> >in ! ; is .n-name
." * " dup hex. >in @ >r parse-name type r> >in ! ; is .n-name
[THEN]
: ?version ( addr u -- )
......
......@@ -144,18 +144,18 @@ pay-table $save
\g
\g ### Contracts ###
\g
\g
\g Contracts are state changes to wallets. A serialized wallet is a contract
\g that contains all the changes from an empty wallet to fill it; it is not
\g checked for balance.
\g
\g
\g A dumb contract is checked for balance. It consists of several selectors
\g (source/account, asset), transactions (amounts added or subtracted from an
\g asset), comments (encoded for the receiver, with a ephermeral pubkey as
\g start and a HMAC as end). Comments are fixed 64 bytes, either plain text or
\g hashes to files. Transactions have to balance, which is facilitated with
\g the balance command, which balances the selected asset.
\g
\g
\g The signature of a contract signs the wallet's state (serialized in
\g normalized form) after the contract has been executed. The current
\g contract's hash is part of the serialization.
......
......@@ -5,7 +5,7 @@ solve the trust problem in a PKI system where the client has to trust
the server. The centralized Certification Authority scheme is broken,
and a distributed system is hard.
However, let's take a step back, and look <b>when</b> do we really want a
However, let's take a step back, and look **when** do we really want a
secure connection? When we have private data on a server, when we want to
authenticate us, and send our credentials over the Internet.
......@@ -20,7 +20,7 @@ attack has to replace both identities to actually intercept the communication
So what happens if we use the public key as sign-in to the server? The user
presents its public key, which establishes a shared secret that allows to
verify that this user is legitimate (i.e. knows his secret key), <b>and</b> at
verify that this user is legitimate (i.e. knows his secret key), **and** at
the same time allows to establish a secure connection.
The trust model is again "we know each other" model. This time, we have a
......@@ -40,7 +40,7 @@ connection with something that is hard for an automatic interception system to
emulate. You send a normal captcha (a distorted image, voice, a program that
generates the text through some non-trivial logic, etc.), which the automatic
interception is not able to process. You encrypt the answer to this captcha on
the client side using the shared secret, and sending <b>only</b> the encryption
the client side using the shared secret, and sending **only** the encryption
checksum of this answer. The intercepting system can not generate the answer to
the captcha itself, and therefore can not generate the correct checksum. The
intercepted client does not have the correct shared secret, and therefore can't
......@@ -64,6 +64,6 @@ to solve for humans) is done to reduce that risk.
If identity providers like Google, Yahoo, or Facebook would simply use
client certificates to verify the identity of their customers (self-singed
client certificates are perfect, what matters is that the certificate <b>does
not change</b>), much of the SSL dilemma would already be solved in a practical
way. No trust chain with the weakest CA as link anymore.
\ No newline at end of file
client certificates are perfect, what matters is that the certificate **does
not change**), much of the SSL dilemma would already be solved in a practical
way. No trust chain with the weakest CA as link anymore.
This diff is collapsed.
......@@ -132,6 +132,6 @@ you need a
git clone [https://github.com/forthy42/ed25519-donna.git](https://github.com/forthy42/ed25519-donna.git)
and to compile&install it, just run ``./autogen.sh && make && sudo make
install``. To install 32 bit libaries on a 64 bit system, run ``autogen.sh``
with ``CC="gcc -m32"``
and to compile&install it, just run `./autogen.sh && make && sudo make
install`. To install 32 bit libaries on a 64 bit system, run `autogen.sh`
with `CC="gcc -m32"`
This diff is collapsed.
This diff is collapsed.
......@@ -18,7 +18,7 @@ well debugged spells give them a chance.
Wizards are depicted as old, bearded white men, but that’s just a stereotype.
## <s>Rules</s> <u>Guidelines</u>
## ~~Rules~~ __Guidelines__
1. Thou shallst not assassinate any superior to get into their place. This is
not limited to physical harm, but also character assassination, doxxing,
......@@ -35,7 +35,7 @@ Wizards are depicted as old, bearded white men, but that’s just a stereotype.
that this is fun.<br />
_(Alberto Malich’s Rule 1)_
## <s>Guidelines</s> <u>Suggestions</u>
## ~~Guidelines~~ __Suggestions__
4. Thou art supposed to teach what thou knowest to those with the appropriate
talent, and learn what thou doest not if thou hast the talent.
......@@ -52,7 +52,7 @@ Wizards are depicted as old, bearded white men, but that’s just a stereotype.
enough pizza, go to bed late, and sleep long. Unless thou art one of those
early risers, then just stay quiet during thy morning exercise.
## <s>Suggestions</s> <u>The End</u>
## ~~Suggestions~~ __The End__
Signed by Mustrum Ridcully in invisible ink.
......
......@@ -27,12 +27,12 @@ producing _pki=pkj\*(ski)_ (the order is irrelevant, every _ski_ must be used
just once). To verify that all secrets have been used, use a chain signature.
The device itself generates the starting point of this chain signature, by
signing its own unlock throw-away secret, producing a tuple
_(k)\*base,(z*sk+k)_ (after producing that tuple and the unlock pubkey, this
_(k)\*base,(z\*sk+k)_ (after producing that tuple and the unlock pubkey, this
secret is no longer needed and thrown away). Each node (HSM) in the chain
will need to modify that signature by adding its own secret _ki_ and
multiplying it with its own secret _ski_, so you first form
_(k)\*base+(ki)*base=(k+ki)*base_ and _(z*sk+k+ki)_, and then
_(ski)\*(k+ki)\*base=(ski(k+ki))*base_, and
_(k)\*base+(ki)\*base=(k+ki)\*base_ and _(z\*sk+k+ki)_, and then
_(ski)\*(k+ki)\*base=(ski(k+ki))\*base_, and
_(ski)\*(z\*sk+k+ki)=(z\*sk\*ski+ski(k+ki))_. The final signature then will
verify correctly against _pkn_, a pubkey only the device itself knows, because
it generated it itself by taking in _pkn-1_ and multiplying its own secret key
......
......@@ -61,7 +61,7 @@ problem. The real problem is that any CA can sign any combination of domain
name and public key, as they like. And any intruder into one of the CAs, who
get access to the signing script can do the same. This is what happened with
DigiNotar. An intruder used DigiNotar's signing key to create a
`*.google.com` certificate. Iran used this certificate to spy on users who
`\*.google.com` certificate. Iran used this certificate to spy on users who
used Google. This came to light, because Google does not really trust the SSL
scheme, and Chrome has a priori knowledge over the google.com domain
signatures, which are signed by Google's own CA. Iran needed to intrude some
......
......@@ -39,9 +39,9 @@ contract, which is a good thing.
An asset account contains the following state:
+ A hash of the contract that last changed the state
+ A table of assets and their values (how many)
+ A timestamped signature of all that in canonical form
* A hash of the contract that last changed the state
* A table of assets and their values (how many)
* A timestamped signature of all that in canonical form
An asset account is addressed by its pubkey. Contracts are addressed by their
hashes.
......@@ -92,20 +92,20 @@ previously used assets can be selected by number.
All sources specify the date of the source state, so that a contract can be
performed only once — the destination date must be later than the source date.
+ Claimed money cheque (anybody who has the transaction can claim the money;
* Claimed money cheque (anybody who has the transaction can claim the money;
requires trust to the ledger node that accepts the cheque): SA-DSA+D
+ Money transfer (only the designated recipient can claim the money): SA-SA+D1D
+ Creation of asset and obligation: SA+OBD
+ Two party purchase: SA¹+A²-S¹B²B1D2D
+ Two party purchase delivery: SA-SOB1D2D (annihilates the asset)
+ Bid/Ask in an exchange: SA¹+A²-D, finalized by SA¹+A²-DS¹B²BD. Note that
* Money transfer (only the designated recipient can claim the money): SA-SA+D1D
* Creation of asset and obligation: SA+OBD
* Two party purchase: SA¹+A²-S¹B²B1D2D
* Two party purchase delivery: SA-SOB1D2D (annihilates the asset)
* Bid/Ask in an exchange: SA¹+A²-D, finalized by SA¹+A²-DS¹B²BD. Note that
bids/asks in an exchange can be more complicated when they are only partly
fulfilled; the splitting requires action by the bidder; and also note that
this kind of bid requires, like the cheque, trust in the ledger node; but
less than: The ledger node can only buy for the same price, not steal the
money.
Better finalize the contract with the other side.
+ Auction offer: SA¹-, auction bid: SA¹-S¹BA²-D, auction conclusion:
* Auction offer: SA¹-, auction bid: SA¹-S¹BA²-D, auction conclusion:
SA¹-S¹BA²-D1²BD. Auction offers are signed with an end-of-auction
beginning to indicate the timeout, and the offering party can select the
best match, allowing other algorithms as maximum price, too, or other
......@@ -139,17 +139,17 @@ big merged contract.
## Size of a transaction
+ Opcodes are one byte (there aren't that many); literals are bytewise encoded
* Opcodes are one byte (there aren't that many); literals are bytewise encoded
and strings have a length preceeding the raw data — see
[commands](commands.md)
+ Sources are 8+32=40 bytes strings
+ Assets are an integer (index into the set of assets), an optional describing
* Sources are 8+32=40 bytes strings
* Assets are an integer (index into the set of assets), an optional describing
string (not needed for a currency)
+ Values are 64 bit integers. For a legal tender, the scale is in cents, for
* Values are 64 bit integers. For a legal tender, the scale is in cents, for
deflationary coins the scale can be considerably larger. Sums are always
kept in 128 bits, so for really large transactions, you can use double
values (two 64 bit integers).
+ Destinations are signatures with timestamp and expiration, i.e. 80 bytes
* Destinations are signatures with timestamp and expiration, i.e. 80 bytes
strings.
A minimal transaction is somewhat less than 300 bytes, and that's already
......
......@@ -14,8 +14,7 @@
10. [Is my blockchain a blockchain](https://gist.github.com/joepie91/e49d2bdc9dfec4adc9da8a8434fd029b)
11. [Der „Wolf of Wall Street“ warnt vor ICOs](http://www.handelsblatt.com/finanzen/maerkte/devisen-rohstoffe/hype-um-krypto-boersengaenge-der-wolf-of-wall-street-warnt-vor-icos/20490646.html)
12. [„Warum BitCoin (jetzt aber wirklich!) TOT ist“-Kwizz](https://www.heise.de/forum/heise-online/News-Kommentare/Bitcoin-klettert-auf-ueber-7000-US-Dollar/Das-monatliche-Warum-Bitcoin-jetzt-aber-wirklich-TOT-ist-Kwizz/posting-31300715/show/)
13. [Bitcoin Mining Electricy Consumption](https://motherboard.vice.com/en_us/article/ywbbpm/bitcoin-mining-electricity-consumption-ethereum-energy-climate-change
)
13. [Bitcoin Mining Electricy Consumption](https://motherboard.vice.com/en_us/article/ywbbpm/bitcoin-mining-electricity-consumption-ethereum-energy-climate-change)
14. [BitCoin Stromverbrauch Energie](http://t3n.de/news/bitcoin-stromverbrauch-energie-872715/)
15. [BitCoin Energy Consumption Index](https://digiconomist.net/bitcoin-energy-consumption)
16. [BitCoin is reactionary](http://www.ianwelsh.net/bitcoin-is-a-bad-way-to-do-something-necessary/)
......
......@@ -10,12 +10,12 @@ money, but we don't know.
### Terms
+ Commodity money: Objects with inherent value used as money
+ Representative money: Note promising exchange with objects with
inherent values used as money (also: promissory notes)
+ Fiat money: Medium with no inherent value and no promise for
exchange with such an object used as money
+ Legal tender: Medium of payment by law, can be any of the above
* Commodity money: Objects with inherent value used as money
* Representative money: Note promising exchange with objects with
inherent values used as money (also: promissory notes)
* Fiat money: Medium with no inherent value and no promise for
exchange with such an object used as money
* Legal tender: Medium of payment by law, can be any of the above
People tend to confuse legal tender with fiat money, because nobody
would accept a fiat money if it's not a legal tender. Or would you?
......
......@@ -41,9 +41,9 @@ We need an actual definition; technically, even a git repository has
some important properties of a BlockChain. The chain of hashed blocks
is one aspect, the consensus algorithm the other:
+ Merkle-tree or equivalent hash-it-all approach (loose definition)
+ no single point of trust
+ consensus algorithm based on the contents only (no external arbiter)
* Merkle-tree or equivalent hash-it-all approach (loose definition)
* no single point of trust
* consensus algorithm based on the contents only (no external arbiter)
## How to cheaply secure the BlockChain
......
......@@ -4,31 +4,31 @@
## Abstract
*10 years after BitCoins “whitepaper”, the BlockChain and crypto
_10 years after BitCoins “whitepaper”, the BlockChain and crypto
currencies are a big hype. Time to look at the results of the
experiment, see what failed and what works, check the consequences for
society, and propose improvements.*
society, and propose improvements._
*BitCoin's technology has three problems which need to be fixed:*
_BitCoin's technology has three problems which need to be fixed:_
+ *The unfair distribution of coins*
+ *The energy consumption of proof of work*
+ *The non-scaleable replicated, but not partitioned ledger*
* _The unfair distribution of coins_
* _The energy consumption of proof of work_
* _The non-scaleable replicated, but not partitioned ledger_
The lightning network tries to address the last point, by doing transactions
off-chain.
## Subtopic List
+ [Bullshit Bingo Sheet](squid-bingo.md)
+ [Purpose & History of Currencies](squid-money.md)
+ [Proof of What?](squid-pow.md)
+ [Speculation Objects?](squid-speculation.md)
+ [SwapDragonChain](squid-chain.md)
+ [Ethical Mining](squid-mining.md)
+ [The Decentral Bank](squid-fed.md)
+ [Dumb Contracts](squid-contracts.md)
+ [Appendix: Literature](squid-literature.md)
* [Bullshit Bingo Sheet](squid-bingo.md)
* [Purpose & History of Currencies](squid-money.md)
* [Proof of What?](squid-pow.md)
* [Speculation Objects?](squid-speculation.md)
* [SwapDragonChain](squid-chain.md)
* [Ethical Mining](squid-mining.md)
* [The Decentral Bank](squid-fed.md)
* [Dumb Contracts](squid-contracts.md)
* [Appendix: Literature](squid-literature.md)
### Share and enjoy!
......
# Topology
net2o assumes a hierarchical topology, i.e. a tree topology. &nbsp;There may
net2o assumes a hierarchical topology, i.e. a tree topology.  There may
be multiple paths reaching the same destination, so this doesn't exclude that
parts of the tree are actually mesh networks. &nbsp;This reflects reality in
parts of the tree are actually mesh networks.  This reflects reality in
the current Internet, and the expensive layer 1 infrastructure isn't likely to
be replaced soon.
Most connections send a larger number of packets, so routing each packet is
wasteful, drives up costs and lowers speed. &nbsp;Therefore the decision is to
switch packets, and route connections - at the source. &nbsp;I call this
wasteful, drives up costs and lowers speed.  Therefore the decision is to
switch packets, and route connections — at the source.  I call this
combination
## Path Switching
......@@ -23,7 +23,7 @@ follows:
path field to mark the way back
The receiver bit-reverses the entire path, and thereby gets a way back to
the sender. &nbsp;This makes spoofing impossible, and eases
the sender.  This makes spoofing impossible, and eases
[handover](handover.wiki), as only the device that
switches networks needs to calculate a new path; the receiver will accept any
properly authenticated packet and use the new path to send data back.
......@@ -42,16 +42,16 @@ The packet contains these elements:
(64\*2^_n_), 2 bit switch flags (broadcast, multicast), 3 bits
reserved, 3 bits for flow control (resend-toggle, burst-toggle,
ack-toggle).
2. 16 bytes path (rough Internet 1.0 equivalent: "address")
2. 16 bytes path (rough Internet 1.0 equivalent: “address”)
3. 8 bytes address: this is the address in the destination buffer where the
packet will be stored (roughly equivalent to port+sequence number)
4. 64\*2^_size_ bytes data
5. 16 bytes authentication data (keyed cryptographic checksum)
The "abstraction" at packet level is shared memory; the model is read
The “abstraction” at packet level is shared memory; the model is read
locally and write remotely (you can't read remotely, you can ask for the other
side to send you packets). &nbsp;Of course, the addresses are virtual, so you
can't write into arbitrary memory - only into the buffers provided by the other
side to send you packets).  Of course, the addresses are virtual, so you
can't write into arbitrary memory only into the buffers provided by the other
side.
## Why Source Routing?
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment