Syscoin NEVM testnet RC2, this is not intended to be a final release or run on mainnet. We are testing on our official testnet, migration happening on block 840000, this is an explorer https://sys-explorer.tk/blocks you can follow for Syscoin blocks. More info to follow for NEVM explorers, faucets etc. Once we migrate to the new block, masternodes can upgrade by simply running the new version of code overtop of their existing install. No reindex should be necessary.
If one does not want to run Geth for NEVM part of the network you can define zmqpubnevm as an empty string which will skip running Geth and not validate EVM blocks.
Internal bridge contracts: https://github.com/syscoin/sysethereum-contracts/tree/dev-4.2.0
Reference dapp to utilize bridge using web3/pali/metamask: https://github.com/syscoin/sysethereum-dapp/tree/testnet (live at https://bridge-testnet.syscoin.org/)
Entry point into c++ syscoin mint funtion (burn on evm and mint as syscoin SYSX SPT): https://github.com/syscoin/syscoin/blob/dev-4.x/src/services/assetconsensus.cpp#L24
Geth fork running alongside Syscoin Core: https://github.com/syscoin/go-ethereum
Solidity opsysblockhash commit: https://github.com/syscoin/solidity/commit/773f0cc343f64a6e43949a2e8beca79cdcfb68b9
You can mine by adding configuration to syscoin.conf (or by specifying them as command line parameters) which will get passed to Geth running internally (process name 'sysgeth'):
Gas limit is optional, by default it is at 8000000 (8m gas limit). NEVM runs with EIP1559 enabled. Change '0xe600696eb0555c93f2c391a1406726cee239091d' with your NEVM address. The rest of the mining process remains the same.
Functionally when you mine, a ZMQ message will be sent to the local geth running configured in NEVM mode to respond to a new block packaging up transactions in the geth txpool. This will put the block into the Syscoin block alongside the transaction root, receipt root and block hash of the NEVM block into the Syscoin block header. The Syscoin block will be propagated through Syscoin nodes which will validate the NEVM block by extracting the NEVM block and passing the data to geth (via ZMQ) to deserialize the block and validate it. If the NEVM execution on the block is invalid, the Syscoin block will be flagged as invalid by the validating node. If the block is valid, the geth node will import and store the block into its state. Connects and Disconnects of blocks are handled this way and so Syscoin block validity depends on NEVM block validity.