• Monday

    • Uniswap widget for use in third-party apps, can swap anywhere: https://github.com/Uniswap/interface. (fake widgets a big security concern).
    • Beanstalk hack. Flash loan -> got majority governance tokens -> proposal to withdraw to address. Stole ~75M, donated a small amount to ukraine.
      • The DAO didn’t have any protection about lock times. How long you have to hold a governance token before it provides a vote, how long a proposal must be open before it’s voted on and accepted/rejected, etc. So the hacker proposed the change and approved/executed it within one block before anyone could see or vote No.
    • Aquarium.
      • Got multiple adapter kits. Finally pieced it together.
        • 13/16″ female tap. Adapter 13/16″ male to 55/64″ male. Adapter 55/64″ female to 55/64″ male. 55/64″ female hose.
        • All 27T.
        • Standard sink is 15/16″ or 55/64″. Mine is not.
        • Standard hose is 3/4″. Mine is not.
      • Started filling the tank. 5gal bucket, takes about 90min through the RODI. Couple small leaks. Minus rocks/sand, plus sump/overflow/plumbing. I expect ~12 buckets. Did 3 yesterday, 6 today.
    • Meta gets 47.5% fee of sales on content sold in its metaverse.
    • You can send someone a message onchain by minting an nft with an svg image of text then sending it to them.
    • Narwhal/Tusk.
      • From the libra/diem team, now mystem and aptos.
      • A DAG-based mempool. Very fast/efficient. Narwhal is the mempool protocol. Tusk is the liveness protocol.
      • Whitepaper: https://arxiv.org/pdf/2105.11827.pdf
    • Solana supports programs written in Move: https://docs.solana.com/proposals/embedding-move.
      • This is because both Solana and Move runtimes depend on accounts for all shared state, making parallelization much easier (that runtimes like EVM, for example).
      • Because of the typing system, many of the runtime checks that solana executes for ownership can be checked at buildtime (well, module deploy time) for Move!
    • CRDTs: https://medium.com/@istanbul_techie/a-look-at-conflict-free-replicated-data-types-crdt-221a5f629e7e.
      • Conflict-free Replication Data Types. Basically you can update a lot of objects in parallel without immediate consensus.
      • Used in distributed systems (obviously), and more recently in blockchain networks.
      • If all the merge operations are commutative (order doesn’t matter), then we can guarantee eventual convergence/consistency. This of course doesn’t apply to most blockchain cases, where transaction order is very important to avoid the doublespend problem.
    • Played with metamask mobile for a sec. The app ships with a browser which you can use to visit and favorite any dapp url. Then it connects to metamask mobile wallet as you’d expect. I tried to visit the same dapps from a non-metamask browser directly (brave) and it wouldn’t connect to metamask mobile.
    • Curve is a DEX for stablecoin pairs. Supports EURS/USDC.
    • Thorchain is an existing solution for cross-chain swaps.
      • DEX across eth, bnb, terra, native, and synth.
      • It does this by running its own network of nodes, “native”. Each of these basically runs a full node for the other blockchains.
      • They insure liquidity providers against impermanent loss.
      • It doesn’t offer crosschain by locking tokens in a smart contract and minting wrapped tokens on the new chain, like most others. It maintains its own thor network that it basically uses as a gigantic liquidity pool.

  • Saturday

    • Correction: my second device still hasn’t deposited the march BAT reward to Gemini.
    • The RODI stages are:
      1. Sediment prefilter.
      2. UDF carbon.
      3. Carbon prefilter.
      4. RO membrane.
      5. Deionization cartridge.
      6. Deionization cartridge.
      7. Deionization cartridge.
    • Placed the live sand and rock. Prepped the salt and test kits. Set up the whole RODI system but don’t have the proper sink-hose adapter. Most sinks are 15/16″ but my aerator threads are different, maybe 55/64″. Ordered a multi adapter kit for tomorrow.
    • Bought protein skimmer, a few corals, and some reef roids.
    • Did taxes.
  • Friday

    • Claimed march BAT rewards on 2 devices. The first deposited into gemini immediately. The second is taking some time, don’t see it yet.
    • https://dfinance.co/
    • Aptos. 160k tps: https://medium.com/aptoslabs/block-stm-how-we-execute-over-160k-transactions-per-second-on-the-aptos-blockchain-3b003657e4ba.
    • Sui. Hot potato, guaranteed-return flash loan: https://github.com/MystenLabs/sui/blob/main/sui_programmability/examples/defi/sources/FlashLender.move. The Receipt struct just has copy, so the only was to get rid of it (and successfully close a transaction) is the call repay() before it’s done.
    • Watched Gambling Wall St. Comically inaccurate.
      • Shorts are good for the market. Keeps overvalue and fraud in balance. It’s the second half of the tug-of-war.
      • Robinhood wasn’t the only broker to halt GME. Multiple did.
      • The coverage of Why (clearing houses) was about one sentence. The doc painted it active and manipulative.
      • No differentiation of Citadel vs Citadel Securities, the actual market maker.
      • No mention of slippage. “Market makers just take some of your money, you’re being shaved off the top.”
      • Ultimately it comes down to hating the wealth (and the primitive emotion behind it, jealousy – which everyone feels). Hating, then finding reasons. Not finding reasons, then hating.
      • It’s a profession. There’s a spectrum of skill. The professionals are at the top. The casual individual has less experience. This just happens to be the profession whose prowess is money, rather than tennis or software or medicine. If leaves were dollars then people would hate gardeners.
      • Payment for order flow is legal for a reason. It’s also more efficient. It’s cheaper and faster when a brokerage can bundle and submit orders directly to the market maker.
      • Hedge funds are the control. They stabilize the entire market, determining what the baseline should be and pushing the market toward that reality. This is done with fundamentals. They seek the true value of companies and profit by moving the actual value of companies toward that true value.
      • This is not market manipulation, this is the bedrock of a healthy market.
      • You know what sounds more like market manipulation? Sending a geriatric brick-and-mortar video game shop to the moon during a pandemic by short squeezing the positions held by firms you don’t like.
      • Deviation from the fundamentals hurts everyone. Retail investors even more than institutions. If pharmaceutical companies were getting rich off a pill that cures a disease but was overpriced, should I create another pill that does nothing but is cheap and marketable in order to make a profit and stick my financial middle finger in the face of big pharm?
    • A tender offer to existing shareholders does not have to be approved by the board. Poison pills are effective – basically the company offers shares at a discount to existing shareholders, diluting the ownership and making it harder / less attractive / more expensive to takeover.
  • Thursday

    • Yield for wbtc/renbtc/etc isn’t high, but can still be staked for slow yield.
    • ETF managers make a profit by charging fees. They’re low though, since management is typically passive or algorithmic.
      • How are the fees deducted? This makes sense for regular funds obv, but I’ve never really looked into how this works on an open market ETF traded on exchanges. I think they rebase the assets (daily?) to adjust the value of backing minus fees. So it’s simply reflected automatically in the value of your holding.
      • An open crypto ETF platform would let you create your own portfolio, in addition to the ones curated by the owners. I imagine the fee structure for these is just % of transaction.
      • Grayscale charges an annual fee. More than 2% in some cases.
    • Osmosis.
      • Primarily a dex on cosmos, but this protocol offers 2 unique features:
        1. Cross-chain. Incorporates bridges so you can swap across diff networks.
        2. Users can create their own DEXs/AMMs/LPs/etc on the platform. Customizable fee structure, non 50:50 ratios, not just constant-product but other curves, concentrated liquidity, etc.
    • Checked https://cotps-otc.com/ out. Looks shady, claims HF (makes no sense since transaction speed is set by the blockchain and order is set by the validators), and has no app/connect/audit/discord/docs/roadmap etc – just a link to another site to register.
    • Circle is applying to become a bank.
    • After turning down the board seat, Elon filed a deal to buy twitter. Their current market valuation is ~37b, the offer was 43b ($54/share). Said it was final, and if not completed, would reconsider his position as a shareholder (9%). The stock jumped at this news, which corners the twitter board even more in fear of tanking after pullout.
    • Aptos = Mo Shaikh CEO, Avery Ching CTO.
    • Mysten = Evan Cheng CEO, Sam Blackshear CTO.
    • 1hr youtube video by Sam Blackshear on Move: https://www.youtube.com/watch?v=EG2-7bQNPv4. “A Safe Language for Programming With Money.”
      • Needs to be deterministic, safe, and have metered execution. Most conventional languages don’t (again, I disagree, you can slightly modify many common languages to achieve these without introduced an entirely new semantic set).
      • Moving vs copying vs referencing resources = critical.
      • Drop/copy/store/key type abilities = critical.
      • No native currency. Anyone (any address) can create a token and add it to global storage (under their address).
      • Code is reusable (even across strangers’ accounts, if exposed), just import a module from another address.
      • All or nothing. A transaction either succeeds fully or fails anywhere and does nothing.
      • The fact that you can enforce stuff won’t be accidentally dropped? Can that be a business? Transaction preview or transaction protection or something.
      • Move comes with gas metering, but final gas prices are set by the network implementation (aptos, starcoin, sui, etc).
    • Downloaded desktop telegram. Joined aptos discord.
    • Eth2 deposit contract is the #1 eth holder (12M ETH = $36B USD): https://etherscan.io/accounts.

  • Wednesday

    • Collabera has sent me 61 emails since Oct 8. 10 emails per month. 1 every 3 days.
    • Finished Return to Space. Was great to recognize all my old SpaceX colleagues. Truly an incomparable mission/vocation.
    • The NFT for Dorsey’s first tweet was put up for auction at $48M and the highest bid was $280: https://www.coindesk.com/business/2022/04/13/jack-dorseys-first-tweet-nft-went-on-sale-for-48m-it-ended-with-a-top-bid-of-just-280/.
    • Olympus.
      • Withdrew USDC from cex to metamask on eth mainnet. Swapped for ETH on 1inch. Swapped half for OHM on 1inch. Added 50:50 OHM/ETH liquidity on sushi. Bought bonds with the SLP tokens on Olympus (6% discount rn). Will claim gOHM then deposit into the tokemak reactor for additional APY. Rinse and repeat every term (2d currently).
      • Remember sushi wraps ETH to wETH in this process, don’t be concerned that Olympus only says OHM-ETH-LP and not OHM-WETH-LP.
      • Remember you are capped on every purchase over the term, you can’t buy infinite bonds at the discount. Right now this is ~110 sOHM, or $3k. So the max you can cycle is 3k every 2 days (well this is the max at a discount; you can stake as much as you’d like at regular rate).
      • Side transactions: wrapped by sOHM to gOHM (for tokemak compatibility) and transferred some more eth for gas (Olympus is one of those DeFi2 protocols only on L1…).
    • Move.
      • Read the whitepaper.
      • https://github.com/MystenLabs/awesome-move.
      • Created a fungible token in Move.
        • Combined 2 primary tutorials: https://github.com/diem/move/tree/main/language/documentation/tutorial (has the dev script for initial install, not small) and https://diem.github.io/move/creating-coins.html.
        • df-cli is the wrapper around the move cli. Then “move package build”
        • Coins usually only have the “store” ability. Balance would have the “key” ability. Not copy or drop, for either.
        • Decorate unittests (regular functions) with #[test] to indicate. Need to declare move-stdlib as a dep in Move.toml. -g to print global state on failure, -s for statistics.
        • Global storage = blockchain state. It’s indexed by addresses.
        • Modules = code (contracts). Owned by addresses.
        • Resources = values. Owned by addresses. Resource storage under each address is basically a map from types to values.
        • Vs eth:
      • In general, the documentation for Move is sparse and not-up-to-date in many cases.
      • Installed the move-analyzer vscode ext.

  • Tuesday

    • CPI inflated 8.5% from last march to this march (highest 1yr delta in over 40yrs).
    • Uniswap added a venture arm.
    • Starcoin (chinese) is another blockchain. They manage their own L1 and L2, with diff responsibilities for each. https://starcoin.org/downloads/Starcoin_en.pdf. Smart contracts are written in Move. List of examples: https://github.com/starcoinorg/starcoin-framework/tree/main/sources.
    • 0L (from libra) also uses Move: https://github.com/OLSF/libra.
    • Read some of Tesla’s 14A from the shareholder meeting on 2021-10-07. He owns 23.1% and has collateralized about half his shares. (that’s like $30b straight if 30% LTV on the current tsla market cap).
    • MEVs are tougher on solana. Much faster, you don’t know when you’re going to be leader until right before.
    • Deepdive on Prysm / private equity ABL dynamics.
    • Move.
      • Move’s name comes from Rust. Rust uses an “Affine” type system, which means that a resource is Moved (not Copied) which means that it must be used 0 or 1 time. Resources can only have one owner (one variable), and that ownership can be transferred. After moving, the previous owner can no longer be used (dangling pointers are automatically cleaned).
      • There are two primary docs: Diem’s (https://diem.github.io/move/) and the Move Book (https://move-book.com/). I’m using the latter.
      • Why an entirely new language? https://community.diem.com/t/introducing-the-move-programming-language/72/43. Blockchain requires a lang to be (1) deterministic (2) hermetic (3) metered. Sure, these aren’t mandatory built-ins for most languages, but they can be easily enforced. (1) is common. (2) disable network. (3) observability and control tools on cpu.
      • Installed “Move IDE” vscode extension (only 682 downloads).
      • No strings or floats. Ints u8/64/128. Cast with “as” or <>. Bool false/true. Address = wallet. Comment // and block /* */. Let, block scope {}. And const. fun. Every var must be used. To intentionally not use, “_” just like python. If, while, continue, break, abort. Assert.
        • A vector is a collection of the same type. An array, but one type. The module is called Vector. It then provides functions like: empty (instantiate), push_back, pop_back, length, borrow_mut.
        • For strings, it’s technically a vector<u8> using ascii conversion from ints to chars. Move allows you simplify this with bytestring literals: b”hello world!”
      • If there’s no semicolon after the last expression in a block, that’s the return value for the block.
      • An overall if statement can’t return a value, must end in semicolon. Same for while.
      • Publish code with module. Call module code with scripts, or nested modules. Modules are published from an address, and called from that address. use <address>::<module>; then <module>::<function>
      • Functions. snake_case names. Modules define many functions. Scripts define just one function, main(). Default is private. “public” to expose it. “native” functions are actually defined by the Move VM.
      • Move requires types for function arguments/returns and all variables.
      • Struct is used for custom types. It’s a dictionary = hashmap = key/val with field:type. You can have a struct (object) nest within a field of a parent struct to compose them.
        • Access properties of instances with dot. “<struct>.<field>”
        • You can destructure like js with {}. Can also define getter/setter functions in a module.
      • An example move contract for a coin swap: https://github.com/diem/move/blob/main/language/documentation/examples/experimental/coin-swap/sources/CoinSwap.move. 100 lines.
      • Types have 4 abilities: copy, drop, store, key.
        • Primitives (int, vector, address, bool) have copy/drop/store (no key).
        • You can specify for your custom types. “struct <name> has store, copy, drop {…}”
        • For example: compiler will complain if a function has a hanging variable without the “drop” ability, because GC won’t be able to kill it.
      • Each variable only has one owner/scope. And the only scope is functions in Move (no classes). So if you pass a var to a function as an argument, that function now owns it. The original scope does NOT have access to the var anymore.
      • The two keywords are “move” and “copy”.
        • By default, when you pass an arg to a func, there’s an implicit “move” before the arg.
        • You can put “copy” instead so the original scope still owns the var. This obviously doubles the memory footprint for this var.
        • Or, you can just “reference” it with “&” before the variable type. It’s not copied, but the new function doesn’t take ownership. The original func still owns that var. Under the hood the VM just creates a link to that section in mem, obv.
        • If the other function wants a writable reference instead of just reading the value, pass with &mut type.
        • “Borrow checking” is a compiler concept. It will statically verify if you’ve violated anything by moving a borrowed value.
        • If you’re passed a reference, you can dereference with *. This creates a copy of the var.
        • You can use a reference of an object but then copy a property for your own purposes. “*&<var>.<inner>”
        • And remember, primitives are always copied. References are not created.
      • Just like typescript, it has the generic type “T” which will accept whatever it’s passed. You may restrict abilities for generic types as well. You may have a list of types in a generic.
      • All Diem currencies are defined with the generic Diem::T type.
      • “Signer” is a native type. It only has one ability: drop. It can’t copy or key or store. It holds the address of the transaction sender. The canonical name for a variable of type Signer is “account”.
      • “Resource” is a struct that has only the Key and Store abilities. Not drop or copy. It used to be a separate type, before abilities became a formal thing.
      • Canonically you name the main resource in a module “Collection”.
      • You can only put a resource under your account (you can have multiple). And you can’t have MULTIPLE resources of the same type under the same account. Eg you can only have 1 sol balance, not 3 sol balances.
      • Native functions: move_to(), exists(), borrow_global(), borrow_global_mut(), acquires, move_from()
  • Monday

    • Been posting majority stealth stuff separately.
    • Olympus moves.
      • Ran an entire “withdrawal” to test the process before placing a larger position.
      • Unwrapped gOHM to sOHM so I’d only be holding 1 asset (the vote matters less to me).
      • Then unstaked. You can’t trade sOHM on DEXs, it’s worth 0. You have to unstake from sOHM to OHM (1:1 ratio), then can swap OHM for USDC or whatever withdrawal method you prefer.
    • Apparently a new Candy Machine CLI called Sugar is being released soon and was demoed at Miami Hacker House yesterday for the first time. It configured and uploaded a collection of >1000 NFTs from start to finish in <5min.
    • Equityzen.
      • The Growth Opportunity Fund exposes ~20 (series C to pre-IPO) companies in a single diversified investment.
      • https://equityzen.com/invest/gof8/
      • It’s a 1.8% management fee, removed from earnings, for an investment in the initial round <75k.
      • 50k min (for this one, the 8th fund).
      • There are questionnaires you fill out when reserving slots – you must answer in the flavor of “very aggressive, high risk, ok with longterm illiquidity” etc in order to be approved.
    • Brave wallet payouts; this experience has been very bad across both devices and both months I’ve participated so far. They take over 2 weeks to arrive (after the turn of the month), and are wrong. Linking multiple devices to the same gemini account… also doesn’t work properly.
    • Goldman Sachs participated in Certik’s funding round (b3).
    • YGG = Yield Guild Games. They’re a gaming guild for blockchain P2E games. Basically DAOs that buy gaming NFTs for in-game items and stuff. They then loan the NFTs out to members. There are revenue shares and stuff.