UNPKG

@tevm/actions

Version:

A typesafe library for writing forge scripts in typescript

47 lines (45 loc) 1.21 kB
import { Block, BlockHeader } from '@tevm/block' import { getAddress } from '@tevm/utils' /** * Request handler for anvil_SetCoinbase JSON-RPC requests. * @param {import('@tevm/node').TevmNode} client * @returns {import('./AnvilProcedure.js').AnvilSetCoinbaseProcedure} */ export const anvilSetCoinbaseJsonRpcProcedure = (client) => { return async (request) => { const vm = await client.getVm() const currentBlock = await vm.blockchain.getCanonicalHeadBlock() const coinbase = getAddress(request.params[0]) const newHeader = BlockHeader.fromHeaderData( { ...currentBlock.header.raw(), coinbase, }, { common: vm.common, freeze: false, setHardfork: false, }, ) // TODO this as any is not necessary we shouldn't be doing this instead fix types please const newBlock = Block.fromBlockData( /** @type {any}*/ ({ ...currentBlock, withdrawals: currentBlock.withdrawals, header: newHeader, }), { common: vm.common, freeze: false, setHardfork: false, }, ) await vm.blockchain.putBlock(newBlock) return { method: request.method, result: coinbase, jsonrpc: '2.0', ...(request.id ? { id: request.id } : {}), } } }