LoginSignup
0
0

More than 5 years have passed since last update.

microraidenを使うときのnetwork id

Posted at

最初に

筆者はECDSAについて通り一遍を読んだだけで、ソースまで追ってません。これは嘘かもしれません。曖昧です。嘘であることがお分かりの方は、ご一報ください。

起こったこと

以下のエラーが出現した。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/.pyenv/versions/pygeth/lib/python3.6/site-packages/microraiden/client/client.py", line 274, in get_suitable_channel
    return self.open_channel(receiver, deposit)
  File "/root/.pyenv/versions/pygeth/lib/python3.6/site-packages/microraiden/client/client.py", line 165, in open_channel
    data
  File "/root/.pyenv/versions/pygeth/lib/python3.6/site-packages/microraiden/utils/contract.py", line 90, in create_signed_contract_transaction
    sign_transaction(tx, private_key, int(contract.web3.version.network))
  File "/root/.pyenv/versions/pygeth/lib/python3.6/site-packages/microraiden/utils/crypto.py", line 116, in sign_transaction
    sig = sign(privkey, keccak256(rlp.encode(tx)), v=35 + 2 * network_id)
  File "/root/.pyenv/versions/pygeth/lib/python3.6/site-packages/microraiden/utils/crypto.py", line 108, in sign
    sig = sig[:-1] + bytes([sig[-1] + v])
ValueError: bytes must be in range(0, 256)

エラーは、bytesは 0 ~ 255までしか取れないのに、それ以上になっちゃってるよ!と仰っている。
コードを追うと、sig[-1]は0 ~ 3のいずれかになるらしい。
そしてv=35 + 2 * network_idらしいので、bytes内を確実に255以下にするにはnetwork_idを109以下にしなくてはならない。

やったこと

とりあえず99にしてやってみよう。
ここは通過したみたいだ。また別のエラーが出現してるけど、とりあえずこれはok。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0