Happy 12th Birthday to Bitcoin! October 31, 2008 marks the start of Bitcoin revolution when Satoshi Nakamoto released the Bitcoin White Paper on cryptography mailing list at metzdowd.com.
S&P (SPY) is moving toward weekly support. A break of weekly support with BEAR VOLUME could be precursor to larger dump. Global Covid Uncertainty, US Presidential Election, Supply of USD all have investors/traders on their toes. If another market pullback, similar to the one earlier this year, is to play out will the US Dollar be the best asset/currency to move into?
Bitcoin’s recent strength is no coincidence. Bitcoin now boasts a much more mature investor base than ever before. With more robust institutional custody and lenders report record breaking volumes, bitcoin seems to be an ideal asset for hedge funds and the likes to flee toward during market volatility. The crypto market has also weathered several storms over the past month or so in regards to the BitMex legal issues and large exchange hacks. A few key insights I believe to be very telling on what the future may hold are below.
-
American Corps (Microstrategy and Square) adding Bitcoin to balance sheet
-
High net worth individuals like Michael Saylor publicly stating personal Bitcoin holdings (17k+ BTC at ~$10,000 per)
-
Institutional/Macro investors, Paul Tudor Jones and Raoul Pal think this is 1st inning where Bitcoin will be “fastest horse”
-
Financial Services executing on crypto/public blockchain strategies in 2020
With most eyes have been on Bitcoin the past couple weeks, Ethereum is stronger then ever. While DeFi has been taking a BIG breather, devs are working day and night to ship a lot of new and necessary projects. I wouldn’t be surprised to see Uniswap announce V3 in the coming weeks as well as the ETH2.0 Phase 0 Deployment Contract Launch/Announcement.
Market Update (Monday 9:30 AM ET)
Percent Change (Rounded) Based on Last Monday Open (9:30 AM ET)
Bitcoin- $13,415 (+2%)
Ether- $383 (-5%)
Gold- $1,890 (-1%)
DJI Average- 26,691 (-4%)
NYSE Composite Index- 12,573 (-4%)
NASDAQ Composite Index- 11,010 (-4%)
S&P500 Index- 3,296 (-3%)
New Developments
-
JPMorgan creates new unit for blockchain projects, CNBC
-
Ethereum startup Nansen raises $1.2M in latest round for data sector, The Block
-
Integrate AcceptEth onto any platform to accept ETH as payment
-
Ethereum Classic (ETC) builds a bridge to Ethereum for DeFi, Decrypt
-
DBS Bank Launching Crypto Exchange Multi-Fiat Support, Finance Magnates
-
DiversiFi updated Public Roadmap, DiversiFi Blog
-
BlockFi takes 5% stake in Grayscale’s Bitcoin Trust (GBTC), CoinDesk
-
Avanti gets 8-0 Approval in Wyoming for a Crypto Bank, CoinDesk
-
PoolTogether V3 has enabled anyone to donate crypto to the “Loot Box”
PoolTogether @PoolTogether_
This week's prize is off to a good start! Tokens for @UniswapProtocol @CurveFinance @MakerDAO @compoundfinance and @NexusMutual have all been added! + more, see the full list here: app.pooltogether.com/pools/PT-cDAI#…
October 31st 2020
6 Retweets28 Likes
Industry Insights
-
Harvest Flashloan Economic Attack Post-Mortem, Harvest Finance
-
Q3 DeFi Report, ConsenSys
-
NSA Cybersecurity Perspectives on Quantum Key Distribution and Quantum Cryptography, NSA
-
The Only Professional Framework for On-chain Market Making, Kyber Blog
-
Brian Brooks analogizes Digital Currency privatized like cell phones, Unchained
-
Bitcoin at 12, Nic Carter
-
ZK vs. Optimistic Rollups, What’s the difference?
-
DeFi Protocols create value by monetizing a community balance sheet
Messari @MessariCrypto
At the core of the DeFi business model is a protocol’s balance sheet. DeFi protocols create value by monetizing a community balance sheet (TVL)
October 27th 2020
4 Retweets22 Likes
Dev Talk
-
Coinbase Open Sources Rosetta for Ethereum, Coinbase Blog
-
OpenZeppelin’s Defender, contract administration, transaction relayer, autotask service to call contracts and guides for security best practices.
-
Create a token on Binance Smart Chain using this Github Gist, HaoyangLiu
-
Uniswap Oracle Docs, Uniswap
-
ETH <> Cosmos Bridge with ERC20, Althea Blog
-
Stripe is Easy, Bitcoin is Easier, Messari
-
Bitcoin Blockspace Efficiency, Ruben Somsen
Ruben Somsen 🚵♀️🚵♂️🚵🚳 @SomsenRuben
1/9 Blocks WILL be full sooner or later. We're not making smart use of block space, so we're likely to experience a bumpy fee ride until people adjust their behavior. It's human nature to want to deny unpleasant truths, but it's better to be ready. Here's what you need to know👇
April 10th 2019
130 Retweets324 Likes
dApp Activity
*Learn to use Binance Smart Chain using Brave Browser
-Download Brave Browser
-Open up Brave’s Crypto Wallet
-Switch from Main Ethereum Network to Custom RPC
-Input the following:
-
RPC URL: https://bsc-dataseed.binance.org/
-
ChainID: 56
-
Symbol: BNB
-
Block Explorer: https://bscscan.com
-Now that you are connected to Binance Smart Chain you need to deposit BEP20 BNB from Binance
-Once the BNB is in the wallet you can visit an AMM like https://pancakeswap.finance/
Dev Activity
Analyze banteg’s StrategyCreamCRV:
*Tools: Metamask (Wallet), Remix IDE (Development Environment), Solidity (Smart Contract Language) Ethereum (Blockchain), Etherscan Block Explorer
# set pragma
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.6.0 <0.7.0;
pragma experimental ABIEncoderV2;
# imports
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";
# contract (Source)
struct StrategyParams {
uint256 performanceFee;
uint256 activation;
uint256 debtLimit;
uint256 rateLimit;
uint256 lastSync;
uint256 totalDebt;
uint256 totalReturns;
}
interface VaultAPI {
function apiVersion() external view returns (string memory);
function token() external view returns (address);
function strategies(address _strategy) external view returns (StrategyParams memory);
function debtOutstanding() external view returns (uint256);
function expectedReturn() external view returns (uint256);
function report(uint256 _harvest) external returns (uint256);
function migrateStrategy(address _newStrategy) external;
function governance() external view returns (address);
}
interface StrategyAPI {
function apiVersion() external pure returns (string memory);
function name() external pure returns (string memory);
function vault() external view returns (address);
function keeper() external view returns (address);
function tendTrigger(uint256 gasCost) external view returns (bool);
function tend() external;
function harvestTrigger(uint256 gasCost) external view returns (bool);
function harvest() external;
event Harvested(uint256 wantEarned, uint256 lifetimeEarned);
}
abstract contract BaseStrategy {
using SafeMath for uint256;
function apiVersion() public pure returns (string memory) {
return "0.1.2";
}
function name() external virtual pure returns (string memory);
VaultAPI public vault;
address public strategist;
address public keeper;
IERC20 public want;
event Harvested(uint256 wantEarned, uint256 lifetimeEarned);
uint256 public reserve = 0;
uint256 public outstanding = 0;
bool public emergencyExit;
constructor(address _vault) public {
vault = VaultAPI(_vault);
want = IERC20(vault.token());
want.approve(_vault, uint256(-1)); // Give Vault unlimited access (might save gas)
strategist = msg.sender;
keeper = msg.sender;
}
function setStrategist(address _strategist) external {
require(msg.sender == strategist || msg.sender == governance(), "!governance");
strategist = _strategist;
}
function setKeeper(address _keeper) external {
require(msg.sender == strategist || msg.sender == governance(), "!governance");
keeper = _keeper;
}
function governance() internal view returns (address) {
return vault.governance();
}
function expectedReturn() public virtual view returns (uint256);
function estimatedTotalAssets() public virtual view returns (uint256);
function prepareReturn() internal virtual;
function adjustPosition() internal virtual;
function exitPosition() internal virtual;
function tendTrigger(uint256 gasCost) public virtual view returns (bool);
function tend() external {
if (keeper != address(0)) require(msg.sender == keeper || msg.sender == strategist || msg.sender == governance());
adjustPosition();
}
function harvestTrigger(uint256 gasCost) public virtual view returns (bool);
function harvest() external {
if (keeper != address(0)) require(msg.sender == keeper || msg.sender == strategist || msg.sender == governance());
if (emergencyExit) {
exitPosition(); // Free up as much capital as possible
} else {
prepareReturn(); // Free up returns for Vault to pull
}
if (reserve > want.balanceOf(address(this))) reserve = want.balanceOf(address(this));
uint256 wantEarned = want.balanceOf(address(this)).sub(reserve);
outstanding = vault.report(wantEarned);
adjustPosition(); // Check if free returns are left, and re-invest them
emit Harvested(wantEarned, vault.strategies(address(this)).totalReturns);
}
function liquidatePosition(uint256 _amount) internal virtual;
function withdraw(uint256 _amount) external {
require(msg.sender == address(vault), "!vault");
liquidatePosition(_amount); // Liquidates as much as possible to `want`, up to `_amount`
want.transfer(msg.sender, want.balanceOf(address(this)).sub(reserve));
}
function prepareMigration(address _newStrategy) internal virtual;
function migrate(address _newStrategy) external {
require(msg.sender == address(vault) || msg.sender == governance());
require(BaseStrategy(_newStrategy).vault() == vault);
prepareMigration(_newStrategy);
}
function setEmergencyExit() external {
require(msg.sender == strategist || msg.sender == governance());
emergencyExit = true;
exitPosition();
vault.revokeStrategy();
if (reserve > want.balanceOf(address(this))) reserve = want.balanceOf(address(this));
outstanding = vault.report(want.balanceOf(address(this)).sub(reserve));
}
function protectedTokens() internal virtual view returns (address[] memory) {
address[] memory protected = new address[](1);
protected[0] = address(want);
return protected;
}
function sweep(address _token) external {
require(msg.sender == governance());
address[] memory _protectedTokens = protectedTokens();
for (uint256 i; i < _protectedTokens.length; i++) require(_token != _protectedTokens[i], "!protected");
IERC20(_token).transfer(governance(), IERC20(_token).balanceOf(address(this)));
}
}Earn Opportunity
One of my favorite ways to earn crypto is through using Brave Browser. I spend a lot of time on the Internet already so it doesn’t require me to alter my current behavior. Brave Browser is worth it for three reasons; it pays, it’s fast, and it’s private! With the right ad settings anyone is able to earn between 5-20 $BAT per month.
