Technical Overview

This overview is written for a highly technical audience in mind, you do not need to understand this overview to actually use our service (which is designed explicitly for ease-of-use).

Thousand Foot Overview#


Hookedin uses a schnorr blind signatures to create a "coin" that represents ownership of bitcoin. There are 31 different magnitudes of coin, from 0 to 30 (inclusive) where each coin is represents 2^magnitude satoshis. (i.e. the smallest coin represents 1 satoshi, and the largest coin ~10.74 bitcoin). This makes it relatively easy to represent any amount as a set of magnitudes. Bitcoin can be seemlessly converted to blinded coins. The blinded coins have incredible privacy, speed and cost characteristics that make them exceedingly practical to use. And at any time they can be converted back to regular bitcoin. Using hookedin is quite simply the cheapest and most private way to use bitcoin.

Provably Honest#

With traditional blind signatures the blinded secret is a (randomized) serial-number. While simple and elegant, it suffers a serious limitation: repudiation. Through malice or mistake the server can falsely claim that serial-number was used before. And likewise through malice or mistake the client can falsely claim the server has cheated them. Unsubstantiated accounts are messy for everyone, and something we can completely avoid. Instead of blinding a serial-number, we blind a public key. This public key is known as theowner of the coin.

All actions on the coin (e.g. spending it) must have an accompanying digital (schnorr) signature by the coin owner that authorizes that specific action. The server stores that signed action, and can produce it on demand to prove that it only acted upon explicit instruction. Because the server never learns the associated private keys it would be impossible to generate fake authorizations. Therefor if the server ever refuses to act on a valid coin, it can be objectively proved the server is dishonest. Likewise after each instruction, the server provides the client with an acknowledgement which the client can use to prove the server has claimed it has completed that action.

Hookins#

A hookin (aka pegin) is the process of converting bitcoin into hookedin coins. With a little eliptical curve magic, we can generate a special hookin address that is indistinguisable from a normal (native segwit) bitcoin address. Then after bitcoin has been sent to that address and safely confirmed the client gives the server the neccessary information to spend the bitcoin (most importantly the public key of the owner that was used to generate the hookin address) and the server gives the client some blinded coins, which it is able to use. Thanks to a little eliptical curve magic, only the server is able spend the coin and no one else. But also allows the client to prove it was the owner of that, to keep the hookin system fully provably-honest.

From a user-point of view, a hookin is as simple as sending bitcoin to a bitcoin address! And for compatibility with software, can even be generated with bip32!

Hookouts#

A hookout (aka pegout) is the opposite of a hookin. It is the process of taking a set of blinded coins, and ask the server to send that amount to a bitcoin address. Furthermore you can add some conditions to the hookout, such as the feerate to use for the bitcoin transfer and if you need the transfer to happen immediately or not. The server is able to leverage economies of scale with large amounts of possible inputs, and able to batch transations (when appropriate). For this reason, using hookedin as a bitcoin wallet is typically signficantly cheaper than using a traditional wallet.

Transfers#

Blinded coins can also be transfered. The great thing about this is it is extremely efficient (no on-chain transaction) with negligible fees and immedately finality (at least as quick as be when communicating with a server). It is also frequent to transfer and exchange coins with yourself. For instance if you have 3 coins of magnitudes 5, it would make sense to convert 2 of them into a mangitude 6 coin.

Coins

There are exactly 31 different coins in hookedin, each having a different magnitude

MagnitudeBitcoin ValueSigning Key
00.00000001 btcpubhi1q2l7qwddj8vsd5u6kfldlmkwn57zj4ju459jl6v00540mnlp594cxf73cwy
10.00000002 btcpubhi1q2lz7tgxm252zqymqrcu88sz2wxzrjgqfwx9n6fxh93dxhhyr5ug5q59gsl
20.00000004 btcpubhi1qd7xs4wur2ls3mp03js8wnrkqeesrthhdga30rqpr23dgcp2h63kuwqphls
30.00000008 btcpubhi1qfqg70k66daugzzatdemgded5gkz3wdjwa6kcf6nn3qehvnv4q69zlesw7r
40.00000016 btcpubhi1qvgs8ypdcrqqt3jnnnv053yj2n40stl75cguj9pcy89hqdnttp577xnwmtl
50.00000032 btcpubhi1qggwkxsx65de633nprcg552kx6nmd3z9wv84az9xct02k3ue8pyejls6lk8
60.00000064 btcpubhi1qgvk6rfzua58czd4j5n98vhj4x4ycepvcedrklyltgqvhhhgcme0vdnqkte
70.00000128 btcpubhi1qtu43wr0qrv6c3vulrky2ur69urwryswz94qu65luvll39yf7nrh5cpz2y0
80.00000256 btcpubhi1qdz3jvgljvhufnzv45dskzpdkut8x68w9n9h28g5j89dsdhsafku7vw58jz
90.00000512 btcpubhi1qwc3uzjj3qylpudqljc5f7n0l0njdvvhgq8v3fs7xzur69y92stsk703fyg
100.00001024 btcpubhi1qw4aa902e8pygceupkl2wfmg4xrez7frufhd9lramzdyrmnpd5kt5xwht53
110.00002048 btcpubhi1q2zy8ln7ce50uz7rfnua0npmap6gd3cwgul3g5fmgwz7fxy34ysnw7z3peu
120.00004096 btcpubhi1qdkwj8xwe7gx9kq436agz2aqfaveh8kl8hjmemctwdfvf365zu8m6l6485u
130.00008192 btcpubhi1q2evytc7kaucn7r78dd2zlmjfnwgk228yy0286zhrd9km64yfdkv6k2sujm
140.00016384 btcpubhi1qd6uqeuthd9amy5cqgd8nptwg03mcgzr0xmtmmgndp8j2rvp6chhckkgch4
150.00032768 btcpubhi1qfhhf96z63gfafrysncf7l4nt92xfalangjagxhln5lfwuj3575xke9lddj
160.00065536 btcpubhi1qdrjqcqxws87728tz0qzv9jw73mqdgw7jc878435kkr7vd5w83ufypwlkwp
170.00131072 btcpubhi1q2rn4shy8dtwru86d70ezdqhj3q4kvpv3j694vdcqsa6qykvteu2j6ztw9h
180.00262144 btcpubhi1qwj4vc7lcdaugsae9wt6fdkvgdydrmlef5d48ar89xht9lrw67nrumcyce8
190.00524288 btcpubhi1qvp2tht5gek2wu0f2gm54kkll9lx5dgt6z0mcdafu6g7av2sn3xpqheys0x
200.01048576 btcpubhi1q067gcxntwc4ug7pf3xter20ke7fglgffsyx5x8rv8dq99eprgtvye9rta5
210.02097152 btcpubhi1qgf3ytfv3wasg5hhnh3ngd2dsfqf8d6lzr6usgtpcyx6uyhs9skl5hudx3v
220.04194304 btcpubhi1qdjuzz03y24cvmsj8czx0r7w68fmayjflqt8cmu8r7qqm3aggddzvl5xwzu
230.08388608 btcpubhi1q27ced66eu7heul88005jen4x7zkpjkr9fhsv5pdhwd05ndclhr8z6040vl
240.16777216 btcpubhi1q00at8lr28g3ej0pnuy7k955qqxgthyw4hm5arc4dvmzwyjgf69dzxjdrdz
250.33554432 btcpubhi1qt3w6tsd8eyzmuvs5rt3962u35jyq4jnzmc8u9m6duspfwa36vav29guw3h
260.67108864 btcpubhi1qfh0cp0wqfzx44hkzcxxrrcfslq5jpgk5jskldjq6h6ptsg4z8fqk3hsrx4
271.34217728 btcpubhi1qvwwm2xuwzhr769fn9kaceqwgk3pt7hmpgeackx7rsaftaz6ywzuw5w5v3t
282.68435456 btcpubhi1qtd36emp24cxsfsegz8helc3r8r5jet2v7mcl9lmuytlp7kkhjm8vajefqz
295.36870912 btcpubhi1qf073s2fysvn4l635mlh44w8v948xqdzvzjttp3fp3lnn8zzl99d73ykexj
3010.73741824 btcpubhi1qfxnla5szd7nvdxyea00r2s99ms8m7u8qp09fl6hx70x7rc7pdrvy6c836m