Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Sara Feenan
    @saronimo
    Yeah, that's where they don't really get how existing banking works and how nostro/vostro and cross currency exchange works now. They's be better off banking on xcurrent and creating a better swift. They have never really explained how the think using xrp will 'unlock' these funds in nostro/vostro
    akhaleel
    @akhaleel
    Swift is a bank collective, a supranational of sorts. I believe ripple is one too. Both the fed and the UN 2030 plan call for new payments system by 2020.
    Sara Feenan
    @saronimo
    Ripple is not a bank collective. Their revenue model is in the most part selling xrp.
    akhaleel
    @akhaleel
    I was involved with ripple before they domiciled. Jed was approached by the federal reserve and a bunch of banks requesting a solution to replace swift. Technically they’re not a collective, perhaps supranational was the proper term. Ripple Labs makes a pretty penny on boarding customers, but yes you’re right, the big prize is the value of xrp.
    fredlacs
    @fredlacs

    Hey guys, great project you've got going on here.
    Been playing around with Ion, mainly using Quorum as a sidechain.

    Looking forward to playing around with it using Autonity and Pantheon's enterprise release.

    fredlacs
    @fredlacs
    Something ive been weary about is empty blocks that are generated from IBFT consensus, it might clutter eth mainchain quite a bit
    Has anyone else given this issue some thought? I’m using RAFT right now, which also reduces the gas costs as these empty block headers arwnt submitted, but being BFT would be quite interesting heh
    Ivaylo Kirilov
    @iikirilov
    You don't need to transfer blocks you don't care about i.e. the empty ones. Checkout web3j-ion I put a simple diagram to explain the flow - essentially you only transfer blocks that have transaction with events you care about
    fredlacs
    @fredlacs
    Thank you, will take a look :)
    Friedrich
    @maxrobot
    @fredlacs you ask a good question! Ion does have a bias towards permissioned chains where gas costs aren't such a concern. We are working on optimising the block submission function to reduce the cost of submitting many blocks! If you have any thoughts how we could do this we'd love to hear them :)
    fredlacs
    @fredlacs
    Will do!
    Ivaylo Kirilov
    @iikirilov
    @maxrobot batch block submission
    Effsy
    @Effsy
    Hello, cool project you have here - I've been experimenting and am having an issue.
    I'm trying to get a proof for a transaction on ganache-cli from the ion-cli: with getProof http://localhost:8545/ txhash but i'm getting an error Error: retrieving block: server returned non-empty transaction list but block header indicates no transactions
    Any ideas?
    Friedrich
    @maxrobot
    @effsy Let me investigate, can you post the commands you entered in the Ion-CLI and the configuration of your ganache-cli please :)
    Effsy
    @Effsy
    const HDWalletProvider = require('truffle-hdwallet-provider')
    const assert = require('assert')
    
    const DEFAULT_GAS_PRICE_GWEI = 5
    const GAS_LIMIT = 6.5e6
    const DEFAULT_MNEMONIC = 'candy maple cake sugar pudding cream honey rich smooth crumble sweet treat'
    
    function truffleConfig ({
      mnemonic = DEFAULT_MNEMONIC,
      gasPriceGWei = process.env.GAS_PRICE_GWEI || DEFAULT_GAS_PRICE_GWEI,
      gas = GAS_LIMIT,
      optimizedEnabled = true,
      urlRinkeby = 'https://rinkeby.infura.io/',
      urlMainnet = 'https://mainnet.infura.io',
      urlDevelopment = 'localhost',
      portDevelopment = 8545,
      solcVersion = '0.5.2',
      solcUseDocker = false
    } = {}) {
      assert(mnemonic, 'The mnemonic has not been provided')
      console.log(`Using gas limit: ${gas / 1000} K`)
      console.log(`Using gas price: ${gasPriceGWei} Gwei`)
      console.log(`Optimizer enabled: ${optimizedEnabled}`)
      console.log('Using default mnemonic: %s', mnemonic === DEFAULT_MNEMONIC)
      const gasPrice = gasPriceGWei * 1e9
    
      const _getProvider = url => {
        return () => new HDWalletProvider(mnemonic, url)
      }
    
      return {
        networks: {
          development: {
            host: urlDevelopment,
            port: portDevelopment,
            gas,
            gasPrice,
            network_id: '*'
          },
          mainnet: {
            provider: _getProvider(urlMainnet),
            network_id: '1',
            gas,
            gasPrice
          },
          rinkeby: {
            provider: _getProvider(urlRinkeby),
            network_id: '4',
            gas,
            gasPrice
          }
        },
        compilers: {
          solc: {
            version: solcVersion,
            docker: solcUseDocker,
            settings: {
              optimizer: {
                enabled: optimizedEnabled,
                runs: 200
              }
            }
          }
        }
      }
    }
    
    module.exports = truffleConfig()
    I'm running a service that will send transactions to ganache
    Friedrich
    @maxrobot
    so I assume you are running ganache-cli --development to run locally?
    Effsy
    @Effsy
    And then from the ion-cli, just running getProof http://localhost:8545/ txhash with the transaction
    yes
    Friedrich
    @maxrobot
    could you try first:
    connectToClient http://localhost:8545
    then try to get the proof without passing the url of the testrpc
    Effsy
    @Effsy
    I get the same error
    Here's the full output:
    Error: retrieving block: server returned non-empty transaction list but block header indicates no transactions
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x79aeb2]
    
    goroutine 1 [running]:
    github.com/ethereum/go-ethereum/core/types.(*Block).Transactions(...)
        /home/effsy/go/src/github.com/ethereum/go-ethereum/core/types/block.go:276
    github.com/clearmatics/ion/ion-cli/utils.GenerateProof(0x911d20, 0xc4200a0010, 0xc4200f2380, 0xd18e7b108ae79795, 0xa79b85809faaffda, 0x1ce7fd2666e5164d, 0x336d49fec8dcb852, 0x1, 0xc42033e000, 0xc42023db30, ...)
        /home/effsy/go/src/github.com/clearmatics/ion/ion-cli/utils/proof.go:33 +0x282
    github.com/clearmatics/ion/ion-cli/cli.getProof(0xc420181540, 0xc42002cc30, 0x42)
        /home/effsy/go/src/github.com/clearmatics/ion/ion-cli/cli/rpc.go:108 +0xb4
    github.com/clearmatics/ion/ion-cli/cli.Launch.func14(0xc42033e000)
        /home/effsy/go/src/github.com/clearmatics/ion/ion-cli/cli/cli.go:614 +0x62
    github.com/abiosoft/ishell.(*Shell).handleCommand(0xc4201420f0, 0xc42000c180, 0x2, 0x2, 0xc42023dc78, 0xc42023dc80, 0x20)
        /home/effsy/go/src/github.com/abiosoft/ishell/ishell.go:278 +0x2cc
    github.com/abiosoft/ishell.handleInput(0xc4201420f0, 0xc42000c180, 0x2, 0x2, 0xc42020a400, 0xc420286060)
        /home/effsy/go/src/github.com/abiosoft/ishell/ishell.go:232 +0x4d
    github.com/abiosoft/ishell.(*Shell).run(0xc4201420f0)
        /home/effsy/go/src/github.com/abiosoft/ishell/ishell.go:211 +0x228
    github.com/abiosoft/ishell.(*Shell).Run(0xc4201420f0)
        /home/effsy/go/src/github.com/abiosoft/ishell/ishell.go:111 +0x39
    github.com/clearmatics/ion/ion-cli/cli.Launch()
        /home/effsy/go/src/github.com/clearmatics/ion/ion-cli/cli/cli.go:718 +0x1293
    main.main()
        /home/effsy/go/src/github.com/clearmatics/ion/ion-cli/main.go:13 +0x25
    Friedrich
    @maxrobot
    I cannot replicate your error, could you try using the testrpc configuration provided in the Ion repository. To use this please cd into GO_PATH/src/github.com/clearmatics/ion and checkout the master branch.
    Following this run, npm install followed by npm run testrpc. Note you will need to kill the other instance of ganache-cli first.
    Shirikatsu
    @Shirikatsu
    @Effsy Which version of ganache-cli are you running? We are aware that some versions do not have stable replications of txTrie construction and will not return the required data in order to construct a transaction proof.
    Effsy
    @Effsy
    Sorry for the delay, yes I've just updated ganache-cli and the proofs are generating now
    Thanks for the help @maxrobot @Shirikatsu
    Shirikatsu
    @Shirikatsu
    @Effsy Fantastic! Glad to be of aid :)
    neogeo1988
    @neogeo1988
    hi all, I try to build in-clion go v.1.8 is missing math/bites ..and the build fails...i have try 1.9/1.11/1.7...and the solve the maths/bits problem...and the latest one i get (github.com/clearmatics/ion/ion-cli/utils
    utils/trie.go:65:29: undefined: ethdb.NewMemDatabase
    utils/trie.go:94:11: undefined: ethdb.NewMemDatabase
    make: * [Makefile:27: build] Error 2)
    neogeo1988
    @neogeo1988
    so the problem was you need go-etherum(version 1.8.13)
    kambit
    @kambit
    @Shirikatsu Hello, I study the Ion (https://github.com/clearmatics/ion), and I find it builds for Ethereum with PoA consensus algorithm. I want to set up if for Ethereum with PoW consensus algorithm. How can I do? And is it possible to set up Ion for Quorum chain with Raft consensus algorithm?
    neogeo1988
    @neogeo1988
    hi i'm trying to build https://github.com/clearmatics/simpleshares ....and i had a lot of errors from docker build...after fixing the build and get to b. Deploy SimpleShares Chaincode ...i get a lot of errors..Has anyone build this in the last few months???
    my latest erros is: ../../../../../hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/util/csp.go:47:8: cannot convert nil to type csr.KeyRequest
    ../../../../../hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/util/csp.go:132:37: cannot use req.KeyRequest (type *csr.KeyRequest) as type csr.KeyRequest in argument to getBCCSPKeyOpts

    i have fabric-sdk-go: master:05ffa0a5ae5db0890341fdec498ccc5e684a6ea5 and fabric 1.3.0
    Shirikatsu
    @Shirikatsu
    @kambit Currently the only validation contracts that have been implemented are for Clique PoA and IBFT. We are hoping that the library will continue to expand with community engagement in the various other consensus mechanisms as they each are different in implementation. We are looking to possibly tackle the PoW algorithm some time in the future. There is not yet validation contracts for Raft, however there are existing ones for IBFT which may work for other flavours of Quorum.
    @neogeo1988 Sorry for lateness of reply. The simpleshares repo is unmaintained and was a demo repository to allow an easy set up of a fabric network which may be out of date. It's separate from the Ion project. It did replicate the fabric tutorials quite closely and you may be able to set up a similar demo network by following the v1.3 fabric docs.
    neogeo1988
    @neogeo1988
    ty for the info!
    kambit
    @kambit
    @Shirikatsu Thanks for your reply!
    kambit
    @kambit

    @Shirikatsu Hi, I get an error when I invoke SubmitBlock. After invoking SubmitBlock method, and checking the transaction receipt, the status is "0x0". which means some error in this transaction.
    parameters for SubmitBlock are:
    _chainId: chainB id(the same as the RegisterChain parameter _chainId)
    _rlpUnsignedBlockHeader: ion_cli get UnsignedBlockHeader
    _rlpSignedBlockHeader: ion_cli get SignedBlockHeader
    _storageAddr: storage contract address by deploy EthereumStore.sol

    UnsignedBlockHeader is: f9021aa013fe15da35b4bc5851e4d7b475fbb2b10b8d8ab3e7a8accda80441204c53364ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a01d2ca9d1c74019628bf4ad0d3433fe4dc2f14e14cd69564c4199e36a9ade8738a044a8280c9ccaacf600861694803b08f21907e838b42b3aab5d7ebb7b05cbd2aaa0a5fd92b082d95adc7f20f3958848bc41b6fd1c2620dce23d903119392d67aff1b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000080000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000260874637ed0c01b1c18257bd845d42fbe6a0d883010814846765746888676f312e31302e34856c696e757800000000000000a00000000000000000000000000000000000000000000000000000000000000000880000000000000000
    SignedBlockHeader is:
    f9025ca013fe15da35b4bc5851e4d7b475fbb2b10b8d8ab3e7a8accda80441204c53364ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a01d2ca9d1c74019628bf4ad0d3433fe4dc2f14e14cd69564c4199e36a9ade8738a044a8280c9ccaacf600861694803b08f21907e838b42b3aab5d7ebb7b05cbd2aaa0a5fd92b082d95adc7f20f3958848bc41b6fd1c2620dce23d903119392d67aff1b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000080000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000260874637ed0c01b1c18257bd845d42fbe6b861d883010814846765746888676f312e31302e34856c696e75780000000000000049789c5898f556b6496ecccb92a8cd49518117d31a11ce4e5d102ed6959814090f72d312b76d6eb11f62489de7505ecaa7a794a77cb5de6c2752764f2910d99a01a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

    Can you help check what I do is wrong? Thanks!

    Shirikatsu
    @Shirikatsu
    @kambit Hey. What were your previous steps prior to this? Which validation contract are you verifying your blocks with? Prior to block submission make sure that you have registered the validation contract against your Ion.sol contract, registered the chain with your chosen genesis and then submit the block.
    kambit
    @kambit
    @Shirikatsu Hi, This is my full steps up to submitBlock:

    chainB Id: 0x2eb66993ca9529fde635eef4fcc251573a604f0fc84f25db5c7e139a3d192bde

    hash of genesis block(invoke fire from Trigger transaction block hash): 0x61b141b2b3cea3660b04ddf5073001238e72d0650cad917428643ac5c9f7a8a1

    connect with geth

    connectToClient http://127.0.0.1:8545

    Add an account

    addAccount me /home/ubuntu/data0/keystore/UTC--2019-07-26T05-47-16.454289425Z--4a971347a403961837978090998a97e4bd4c63e4

    add Trigger contract

    addContractInstance Trigger /home/ubuntu/Go/src/github.com/clearmatics/ion/contracts/functional/Trigger.sol

    deploy

    deployContract Trigger me 1000000
    ==> deploy contrct address: 0x9Cbf0E03E44Bb2C670AbfD38cCBb47169362dB15

    transactionMessage

    transactionMessage Trigger fire me 0x9Cbf0E03E44Bb2C670AbfD38cCBb47169362dB15 0 1000000
    ==> transaction hash: 0xcb50d1c2c49883eeac174b17cd5e2cc713b4f21836fecea02b0bd39cc03da8a6
    ==> block number: 513
    ==> block hash:0x61b141b2b3cea3660b04ddf5073001238e72d0650cad917428643ac5c9f7a8a1

    get RLP-encoded

    getBlockByNumber_Clique http://127.0.0.1:8545 513
    ==>
    Signed Block:
    f9025ea061b141b2b3cea3660b04ddf5073001238e72d0650cad917428643ac5c9f7a8a1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0e612e3ec95d235d35f4265c939f2a3fc42de4e96745c261cd1455ad03c94e004a0906c79301ba3a38c534ac66fdade97388171aa8c85a688b005d78ae6f39dbee2a08cd11238516edba8a0ea40bd10bce64742113a4a715d3b6d1d4119617ca5f94fb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000080008000000000000282020187697e0f3bf13b658257bd845d440a6ab861d883010814846765746888676f312e31302e34856c696e757800000000000000a042445ae83b5d6d22deb53de690cf256b07b2c7efb5f50875465f744e8ae6f041564c96333123a4fefa308cda05e4aaaafb5066401c65ba6dbc247a7fdb179b00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000
    Unsigned Block:
    f9021ca061b141b2b3cea3660b04ddf5073001238e72d0650cad917428643ac5c9f7a8a1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0e612e3ec95d235d35f4265c939f2a3fc42de4e96745c261cd1455ad03c94e004a0906c79301ba3a38c534ac66fdade97388171aa8c85a688b005d78ae6f39dbee2a08cd11238516edba8a0ea40bd10bce64742113a4a715d3b6d1d4119617ca5f94fb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000080008000000000000282020187697e0f3bf13b658257bd845d440a6aa0d883010814846765746888676f312e31302e34856c696e757800000000000000a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

    connect with geth

    connectToClient http://127.0.0.1:8545

    Add an account

    addAccount me /home/ubuntu/data0/keystore/UTC--2019-07-26T05-47-16.454289425Z--4a971347a403961837978090998a97e4bd4c63e4

    add ion contract

    addContractInstance ion /home/ubuntu/Go/src/github.com/clearmatics/ion/contracts/Ion.sol

    deploy ion

    deployContract ion me 1000000
    ChianA id: 0xaf32c716536cdc65de1f95a7987347b37705559d13c665bf292631a6db394f6d
    ==> Ion contract address: 0x2b7Bf752Ba104aBf02f1e49948c70Be6713faBDB

    add ethstore contract

    addContractInstance ethstore /home/ubuntu/Go/src/github.com/clearmatics/ion/contracts/storage/EthereumStore.sol

    deploy ethstore

    deployContract ethstore me 100000000
    Ion contract address

    deploy ethstore

    deployContract ethstore me 100000000
    Ion contract address: 0x2b7Bf752Ba104aBf02f1e49948c70Be6713faBDB
    ==> ethstore contract address: 0xd93c9Ffddf60bE7ccef688dd913211894dBbcd25

    add clique contract

    addContractInstance clique /home/ubuntu/Go/src/github.com/clearmatics/ion/contracts/validation/Clique.sol

    deploy clique

    deployContract clique me 7581563
    Ion contract address: 0x2b7Bf752Ba104aBf02f1e49948c70Be6713faBDB
    ==> clique contract address: 0xC9A36533ef62b9F1a9daAA2e1A0eB5E028140Fe2

    call register function

    transactionMessage clique register me 0xC9A36533ef62b9F1a9daAA2e1A0eB5E028140Fe2 0 7581563
    ==> transaction hash: 0x7969a7584d74af12a871911b26c65a3e4403bf3a5e2a06aaa0e61e9903fdc323

    call

    transactionMessage clique RegisterChain me 0xC9A36533ef62b9F1a9daAA2e1A0eB5E028140Fe2 0 7581563
    ChainB id: 0x2eb66993ca9529fde635eef4fcc251573a604f0fc84f25db5c7e139a3d192bde
    _validators address: 0xC9A36533ef62b9F1a9daAA2e1A0eB5E028140Fe2
    ChainB _genesisBlockHash: 0x61b141b2b3cea3660b04ddf5073001238e72d0650cad917428643ac5c9f7a8a1
    _storeAddr: 0xd93c9Ffddf60bE7ccef688dd913211894dBbcd25
    ==> transaction hash: 0x2c9c598d2ec54a43e718e3209c087ac9a98a40a6ff6378df47f46313f000bbcb

    #####################SETUO FINISH

    connect with geth

    connectToClient http://127.0.0.1:8545

    Add an account

    addAccount me /home/ubuntu/data0/keystore/UTC--2019-07-26T05-47-16.454289425Z--4a971347a403961837978090998a97e4bd4c63e4

    add clique contract

    addContractInstance clique /home/ubuntu/Go/src/github.com/clearmatics/ion/contracts/validation/Clique.sol

    submit block

    transactionMessage clique SubmitBlock me 0xC9A36533ef62b9F1a9daAA2e1A0eB5E028140Fe2 0 7581563
    ChainB id: 0x2eb66993ca9529fde635eef4fcc251573a604f0fc84f25db5c7e139a3d192bde
    _rlpUnSingedBlockHeader: 0xf9021ca061b141b2b3cea3660b04ddf5073001238e72d0650cad917428643ac5c9f7a8a1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0e612e3ec95d235d35f4265c939f2a3fc42de4e96745c261cd1455ad03c94e004a0906c79301ba3a38c534ac66fdade97388171aa8c85a688b005d78ae6f39dbee2a08cd11238516edba8a0ea40bd10bce64742113a4a715d3b6d1d4119617ca5f94fb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000080008000000000000282020187697e0f3bf13b658257bd845d440a6aa0d883010814846765746888676f312e31302e34856c696e757800000000000000a00000000000000000000000000000000000000000000000000000000000000000880000000000000000
    _rlpSignedBlockHeader: 0 0xf9025ea061b141b2b3cea3660b04ddf5073001238e72d0650cad917428643ac5c9f7a8a1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0e612e3ec95d235d35f4265c939f2a3fc42de4e96745c261cd1455ad03c94e004a0906c79301ba3a38c534ac66fdade97388171aa8c85a688b005d78ae6f39dbee2a08cd11238516edba8a0ea40bd10bce64742113a4a715d3b6d1d4119617ca5f94fb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000800000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000080008000000000000282020187697e0f3bf13b658257bd845d440a6ab861d883010814846765746888676f312e31302e34856c696e757800000000000000a042445ae83b5d6d22deb53de690cf256b07b2c7efb5f50875465f744e8ae6f041564c96333123a4fefa308cda05e4aaaafb5066401c65ba6dbc247a7fdb179b00a000000000000000000000000000000000000

    _storageAddr: 0xd93c9Ffddf60bE7ccef688dd913211894dBbcd25
    ==> transaction hash: 0x4e9a3705637d3b22175c0f476348c6df354ea4eb29b48c0f70fe383df6884fee
    @Shirikatsu If you have time, please help check my steps. Thank you very much!
    kambit
    @kambit
    I check the error is from require( checkSignature(_chainId, signedHeader[12].toBytes(), _rlpUnsignedBlockHeader, parentBlockHash), "Signer is not validator" ); in SubmitBlock method. In the checkSignature method, extraDataSig is 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000. I donot know why extraDataSig is abnormal.