Bitcoin Stats & Eth2 Staking

Do repost and rate:

Bitcoin Stats:

- Relative Unrealized Profit

- Holders In The Money

- Bitcoin Held On Exchanges

Status of Eth2 Deposit Contract:

 

Deposit Contract

Market Update (Monday 9:30 AM ET)

Percent Change (Rounded) Based on Last Monday Open (9:30 AM ET)

Bitcoin- $16,409 (+8%)

Ether- $459 (+3%)

Gold- $1,890 (+2%)

DJI Average- 29,672 (+1%)

NYSE Composite Index- 13,946 (+1%)

NASDAQ Composite Index- 11,847 (UNCH)

S&P500 Index- 3,600 (+1%)

Share

New Developments

  1. Blocknative Raises $5 Million to Illuminate the Dark Forest, Blocknative

  2. Outpost Dev Switching Gears to Work on Myco, Sam Hatem

  3. Chinese Bank Is Selling Bonds That Can be Bought With Cash or Bitcoin, WSJ

  4. TrueFi, DeFi Protocol for Uncollateralized Lending, Trust Token

  5. Brent Crude Oil Futures Available on Synthetix Exchange, CoinDesk

  6. Overview of the Lightning Network Ecosystem, Fulgur Ventures

  7. Celer State Guardian Network Launches on Mainnet, Celer Blog

  8. LiquidStake Provides Access to USDC Liquidity as a Staker in Eth2

    Joseph Lubin @ethereumJoseph.@liquidstake offers an ideal solution for ETH holders looking to stay liquid while staking. I’m excited to watch @DARMACapital play a significant role in the Eth2 transition with LiquidStake, which has selected @ConsenSysCodefi Staking as one of its partners. Register below.

    LiquidStake @liquidstake

    Ethereum 2.0 is coming. When you stake your ETH, your funds will be locked until a later date in time. Stake directly through LiquidStake and earn rewards without sacrificing your liquidity. Learn more and register https://t.co/CbWIFYwAQs https://t.co/rimXA2prNi

    November 11th 2020

    20 Retweets93 Likes

Industry Insights

  • So You Want to Use a Price Oracle, samzcsun

  • Running an Ethereum Node on Kubernetes is Easy, Jonathon Otto

  • US Regulators Have Hit Crypto Firms With Over $198M to Date, The Block

  • Crypto Art: A Decentralized View, Cornell Research

  • BTC Call NFT, Andre Cronje

  • Eth2 Staking Best Practices, Phil

    phil.eth @phil_eth1/n I’d like to share my list of best practices when it comes down to depositing your 32ETH stake(s) and ETH2 staking. By no means is this list complete and most likely not everyone will agree on all of these points or find them applicable to themselves.

    November 15th 2020

    40 Retweets120 Likes

Dev Talk

  1. List of Ethereum RPC Endpoints in the Event Infura Goes Down, David Mihal

  2. Sending Transactions Using Web3 and Alchemy, Elan Halpern

  3. Graph Protocol Utils, AMXX

  4. LexDAO Token Factory, Ross Campbell

  5. Eth 2.0 Staking & More w/ Topaz & DAppnode for under $750, Hudson Jameson

  6. Announcing Speculative Execution for Ethereum, dfuse

  7. Testing Chainlink Smart Contracts, Chainlink

  8. Solidity Code Found in Ariana Grande’s 34+35 Music Video

    JZ @jzlegionIs the code from @ArianaGrande's 34+35 music video Soldity? It has msg.sender, selfdestruct, and I'm pretty sure "greeter is mortal"is from the Solidity tutorial. github.com/ethereum/ether…

    November 10th 2020

    30 Retweets172 Likes

dApp Activity

*Analyze Public Subgraphs using The Graph and Ethereum

- What does the Subgraph do?

- Does the Subgraph look production ready?

- How useful would the Subgraph be to others?

- What kind of additions or modifications to the schema would you make?

- Are there similar Subgraphs to the one being analyzed?

- How complete, complex, and accurate is the Subgraph?

To answer the questions above you will need to make your way to The Graph’s website and find a Subgraph to analyze. From there you can explore several Subgraphs and use the hosted playground to acquire information on that specific Ethereum contract. Most Subgraph code can be found on Github where you can evaluate the schema and supporting files to see how the data is queried.

Resource

Dev Activity

Analyze Eth2 Deposit Contract:
*Tools: METAMASK (Wallet), Remix IDE (Development Environment), Solidity (Smart Contract Language) Ethereum (Blockchain), Etherscan Block Explorer

# set pragma

pragma solidity 0.6.11;

# contract (Source)

interface IDepositContract {    /// @notice A processed deposit event.    event DepositEvent(        bytes pubkey,        bytes withdrawal_credentials,        bytes amount,        bytes signature,        bytes index    );    /// @notice Submit a Phase 0 DepositData object.    /// @param pubkey A BLS12-381 public key.    /// @param withdrawal_credentials Commitment to a public key for withdrawals.    /// @param signature A BLS12-381 signature.    /// @param deposit_data_root The SHA-256 hash of the SSZ-encoded DepositData object.    /// Used as a protection against malformed input.    function deposit(        bytes calldata pubkey,        bytes calldata withdrawal_credentials,        bytes calldata signature,        bytes32 deposit_data_root    ) external payable;    /// @notice Query the current deposit root hash.    /// @return The deposit root hash.    function get_deposit_root() external view returns (bytes32);    /// @notice Query the current deposit count.    /// @return The deposit count encoded as a little endian 64-bit number.    function get_deposit_count() external view returns (bytes memory);}// Based on official specification in https://eips.ethereum.org/EIPS/eip-165interface ERC165 {    /// @notice Query if a contract implements an interface    /// @param interfaceId The interface identifier, as specified in ERC-165    /// @dev Interface identification is specified in ERC-165. This function    ///  uses less than 30,000 gas.    /// @return `true` if the contract implements `interfaceId` and    ///  `interfaceId` is not 0xffffffff, `false` otherwise    function supportsInterface(bytes4 interfaceId) external pure returns (bool);}// This is a rewrite of the Vyper Eth2.0 deposit contract in Solidity.// It tries to stay as close as possible to the original source code./// @notice This is the Ethereum 2.0 deposit contract interface./// For more information see the Phase 0 specification under https://github.com/ethereum/eth2.0-specscontract DepositContract is IDepositContract, ERC165 {    uint constant DEPOSIT_CONTRACT_TREE_DEPTH = 32;    // NOTE: this also ensures `deposit_count` will fit into 64-bits    uint constant MAX_DEPOSIT_COUNT = 2**DEPOSIT_CONTRACT_TREE_DEPTH - 1;    bytes32[DEPOSIT_CONTRACT_TREE_DEPTH] branch;    uint256 deposit_count;    bytes32[DEPOSIT_CONTRACT_TREE_DEPTH] zero_hashes;    constructor() public {        // Compute hashes in empty sparse Merkle tree        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH - 1; height++)            zero_hashes[height + 1] = sha256(abi.encodePacked(zero_hashes[height], zero_hashes[height]));    }    function get_deposit_root() override external view returns (bytes32) {        bytes32 node;        uint size = deposit_count;        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {            if ((size & 1) == 1)                node = sha256(abi.encodePacked(branch[height], node));            else                node = sha256(abi.encodePacked(node, zero_hashes[height]));            size /= 2;        }        return sha256(abi.encodePacked(            node,            to_little_endian_64(uint64(deposit_count)),            bytes24(0)        ));    }    function get_deposit_count() override external view returns (bytes memory) {        return to_little_endian_64(uint64(deposit_count));    }    function deposit(        bytes calldata pubkey,        bytes calldata withdrawal_credentials,        bytes calldata signature,        bytes32 deposit_data_root    ) override external payable {        // Extended ABI length checks since dynamic types are used.        require(pubkey.length == 48, "DepositContract: invalid pubkey length");        require(withdrawal_credentials.length == 32, "DepositContract: invalid withdrawal_credentials length");        require(signature.length == 96, "DepositContract: invalid signature length");        // Check deposit amount        require(msg.value >= 1 ether, "DepositContract: deposit value too low");        require(msg.value % 1 gwei == 0, "DepositContract: deposit value not multiple of gwei");        uint deposit_amount = msg.value / 1 gwei;        require(deposit_amount <= type(uint64).max, "DepositContract: deposit value too high");        // Emit `DepositEvent` log        bytes memory amount = to_little_endian_64(uint64(deposit_amount));        emit DepositEvent(            pubkey,            withdrawal_credentials,            amount,            signature,            to_little_endian_64(uint64(deposit_count))        );        // Compute deposit data root (`DepositData` hash tree root)        bytes32 pubkey_root = sha256(abi.encodePacked(pubkey, bytes16(0)));        bytes32 signature_root = sha256(abi.encodePacked(            sha256(abi.encodePacked(signature[:64])),            sha256(abi.encodePacked(signature[64:], bytes32(0)))        ));        bytes32 node = sha256(abi.encodePacked(            sha256(abi.encodePacked(pubkey_root, withdrawal_credentials)),            sha256(abi.encodePacked(amount, bytes24(0), signature_root))        ));        // Verify computed and expected deposit data roots match        require(node == deposit_data_root, "DepositContract: reconstructed DepositData does not match supplied deposit_data_root");        // Avoid overflowing the Merkle tree (and prevent edge case in computing `branch`)        require(deposit_count < MAX_DEPOSIT_COUNT, "DepositContract: merkle tree full");        // Add deposit data root to Merkle tree (update a single `branch` node)        deposit_count += 1;        uint size = deposit_count;        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {            if ((size & 1) == 1) {                branch[height] = node;                return;            }            node = sha256(abi.encodePacked(branch[height], node));            size /= 2;        }        // As the loop should always end prematurely with the `return` statement,        // this code should be unreachable. We assert `false` just to be safe.        assert(false);    }    function supportsInterface(bytes4 interfaceId) override external pure returns (bool) {        return interfaceId == type(ERC165).interfaceId || interfaceId == type(IDepositContract).interfaceId;    }    function to_little_endian_64(uint64 value) internal pure returns (bytes memory ret) {        ret = new bytes(8);        bytes8 bytesValue = bytes8(value);        // Byteswapping during copying to bytes.        ret[0] = bytesValue[7];        ret[1] = bytesValue[6];        ret[2] = bytesValue[5];        ret[3] = bytesValue[4];        ret[4] = bytesValue[3];        ret[5] = bytesValue[2];        ret[6] = bytesValue[1];        ret[7] = bytesValue[0];    }}

Earn Opportunity

Do you like playing Poker and earning Bitcoin? If so, Proton Chain has you covered! Using the Proton Wallet, verifying your identity, and heading over to ProtonGames, you can play Jacks or Better for a chance to win some Sats!

Regulation and Society adoption

Ждем новостей

Нет новых страниц

Следующая новость