mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-05 23:43:07 +00:00
Changes:
modified: .gitmodules
modified: tests/waku_discv5/utils.nim
modified: tests/waku_enr/utils.nim
modified: tests/waku_rln_relay/test_rln_group_manager_onchain.nim
modified: tests/waku_rln_relay/utils.nim
modified: tests/waku_rln_relay/utils_onchain.nim
modified: vendor/nim-chronicles
modified: vendor/nim-eth
modified: vendor/nim-http-utils
modified: vendor/nim-json-rpc
modified: vendor/nim-json-serialization
modified: vendor/nim-libp2p - 1.8.0!
modified: vendor/nim-metrics
new file: vendor/nim-minilru
modified: vendor/nim-nat-traversal
modified: vendor/nim-presto
modified: vendor/nim-secp256k1
modified: vendor/nim-serialization
modified: vendor/nim-stew
modified: vendor/nim-taskpools
modified: vendor/nim-testutils
modified: vendor/nim-toml-serialization
modified: vendor/nim-unicodedb
modified: vendor/nim-unittest2
modified: vendor/nim-web3 - from distinct branch that solves Ethereum ABI issue.
modified: vendor/nim-websock
modified: vendor/nim-zlib
modified: vendor/nimcrypto
modified: waku.nimble
modified: waku/common/enr/builder.nim
modified: waku/common/enr/typed_record.nim
modified: waku/common/utils/nat.nim
modified: waku/discovery/waku_discv5.nim
modified: waku/waku_rln_relay/conversion_utils.nim
modified: waku/waku_rln_relay/group_manager/on_chain/group_manager.nim
modified: waku/waku_rln_relay/rln/wrappers.nim
modified: waku/waku_rln_relay/rln_relay.nim
* Eliminate C compilation issue with chat2bridge due to an overcomplicating import from json_rpc instead of using std/json
* Adapt ENR Record handling to new interface of nim-eth
* Fix chrash in group_manager on_chain
* Fix signature of register and MemberRegister to UInt256, check transaction success in register
* Upgrade json-rpc and serialization
* Update to match latest enr and nat interface
* Using of extracted result of contract macro - with necessary adaption
* Bump nim-chornicles, nim-libp2p, nimcrypto
* Bump nim-web3, nim-eth and deps - on_chain/group_manager.nim adaption
* Added status-im/nim-minilru submodule required by latest nim-eth
Fixing tests.
* group_manager: adapt smart contract param types
* update web3 vendor
* bump vendors for v0.35.0
* protobuf.nim: fix compilation error after nim-libp2p bump
* changes to make it compile after rebase from master
---------
Co-authored-by: NagyZoltanPeter <113987313+NagyZoltanPeter@users.noreply.github.com>
33 lines
1.2 KiB
Nim
33 lines
1.2 KiB
Nim
import web3, chronos, options, stint, stew/byteutils
|
|
|
|
proc deployContract*(
|
|
web3: Web3, code: string, gasPrice = 0, contractInput = ""
|
|
): Future[ReceiptObject] {.async.} =
|
|
# the contract input is the encoded version of contract constructor's input
|
|
# use nim-web3/encoding.nim module to find the appropriate encoding procedure for different argument types
|
|
# e.g., consider the following contract constructor in solidity
|
|
# constructor(uint256 x, uint256 y)
|
|
#
|
|
# the contractInput can be calculated as follows
|
|
# let
|
|
# x = 1.u256
|
|
# y = 5.u256
|
|
# contractInput = encode(x).data & encode(y).data
|
|
# Note that the order of encoded inputs should match the order of the constructor inputs
|
|
let provider = web3.provider
|
|
let accounts = await provider.eth_accounts()
|
|
|
|
var code = code
|
|
if code[1] notin {'x', 'X'}:
|
|
code = "0x" & code
|
|
var tr: TransactionArgs
|
|
tr.`from` = Opt.some(web3.defaultAccount)
|
|
let sData = code & contractInput
|
|
tr.data = Opt.some(hexToSeqByte(sData))
|
|
tr.gas = Opt.some(Quantity(3000000000000))
|
|
if gasPrice != 0:
|
|
tr.gasPrice = Opt.some(gasPrice.Quantity)
|
|
|
|
let r = await web3.send(tr)
|
|
return await web3.getMinedTransactionReceipt(r)
|