Giter VIP home page Giter VIP logo

tvm-linker's Introduction

TVM linker

This repository stores the source code for tvm_linker utility. It can immediately execute a smart contract by emulating the computing phase of transaction.

Prerequisites

How to build

$ cargo update && cargo build --release

How to use

tvm_linker has several modes of work:

  • Decoding of .boc messages prepared externally.
tvm_linker decode ...
  • Preparing an external inbound messages in .boc format.
tvm_linker message ...
  • Emulating contract execution:

Linker can emulate compute phase of blockchain transaction. It is useful for contract debugging.

tvm_linker test ...

More Help

Use tvm_linker --help for detailed description about all options, flags and subcommands.

tvm-linker's People

Contributors

a-zorina avatar akiramenai avatar alexeyvavilin avatar andrey-kurochkin avatar aslanin avatar atomxy avatar azhogin avatar borisi avatar buktop24 avatar bvscd avatar condor-the-bird avatar d3p avatar deniskore avatar diserere avatar emelyanenkok avatar futurizt avatar igorkoval avatar joydark avatar keshoid avatar lenykholodov avatar mskvortsov avatar noamdev avatar sehor05 avatar shd avatar silkovalexander avatar simonvorobjev avatar sumrachek avatar tonjen avatar unboxedtype avatar yaroslavser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tvm-linker's Issues

Not compiling on Ubuntu 20 (Rust 1.43.0)

I cannot compile TVM Linker on Ubuntu 20 with freshly installed Cargo and Rust.
The problem seems to relate to TON SDK v0.26.0 judging from the error, but it happens when compiling this project.

image

   Compiling ton_sdk v0.26.0 (https://github.com/tonlabs/ton-sdk.git#b66b0e78)
error[E0277]: the trait bound `std::vec::Vec<api_info::Field>: std::convert::From<[api_info::Field; 6]>` is not satisfied
   --> /home/skydev/.cargo/git/checkouts/ton-sdk-11823a0ea1fdf592/b66b0e7/ton_sdk/src/transaction.rs:162:34
    |
162 | #[derive(Serialize, Deserialize, ApiType, Debug, PartialEq, Clone, Default)]
    |                                  ^^^^^^^ the trait `std::convert::From<[api_info::Field; 6]>` is not implemented for `std::vec::Vec<api_info::Field>`
    |
    = help: the following implementations were found:
              <std::vec::Vec<T> as std::convert::From<&[T]>>
              <std::vec::Vec<T> as std::convert::From<&mut [T]>>
              <std::vec::Vec<T> as std::convert::From<std::borrow::Cow<'a, [T]>>>
              <std::vec::Vec<T> as std::convert::From<std::boxed::Box<[T]>>>
            and 5 others
    = note: required because of the requirements on the impl of `std::convert::Into<std::vec::Vec<api_info::Field>>` for `[api_info::Field; 6]`
    = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
error: could not compile `ton_sdk`.

build error (master branch)

Getting an errors during build from master branch:

Compiling ton_sdk v1.1.1 (https://github.com/tonlabs/ton-sdk.git#504f599a)
error[E0308]: mismatched types
   --> src/program.rs:354:51
    |
354 |         let mut adjusted_cell = BuilderData::from(cell);
    |                                                   ^^^^
    |                                                   |
    |                                                   expected '&ton_types::Cell', found struct 'ton_types::Cell'
    |                                                   help: consider borrowing here: '&cell'

error[E0308]: mismatched types
  --> src/real_ton.rs:36:51
   |
36 |         let mut adjusted_cell = BuilderData::from(root);
   |                                                   ^^^^
   |                                                   |
   |                                                   expected '&ton_types::Cell', found struct 'ton_types::Cell'
   |                                                   help: consider borrowing here: '&root'

error[E0599]: no variant or associated item named 'Dump' found for enum 'EngineTraceInfoType' in the current scope
   --> src/testcall.rs:320:47
    |
320 |     if info.info_type == EngineTraceInfoType::Dump {
    |                                               ^^^^ variant or associated item not found in 'EngineTraceInfoType'

error: aborting due to 3 previous errors

Some errors have detailed explanations: E0308, E0599.
For more information about an error, try 'rustc --explain E0308'.
error: could not compile 'tvm_linker'

To learn more, run the command again with --verbose.

rustc 1.50.0 (cb75ad5db 2021-02-10)
cargo 1.50.0 (f04e7fab7 2021-02-04)
debian 10.3

DECODE ERROR tvm_linker decode --tvc TONTokenWalletNF.tvc > code.txt

I'm trying to deploy NFT on local network from https://github.com/tonlabs/ton-labs-contracts/tree/master/cpp/tokens-nonfungible . But when tvc decoding I get the following error in output:
version: decoding failed: invalid utf-8 sequence of 1 bytes from index 0
With this error, it is not possible to deploy RootTokenContractNF contract.

Steps

  1. tondev clang compile TONTokenWalletNF.cpp
  2. tondev clang compile RootTokenContractNF.cpp
  3. ./tvm_linker decode --tvc TONTokenWalletNF.tvc > code.txt
  4. export TVM_WALLET_CODE=cat code.txt
  5. ./tonos-cli deploy RootTokenContractNF.tvc '{"name":"54657374","symbol":"545354", "decimals":"0","root_public_key":"0x65eb078be1ae9186c4ff96e13e0cfe7f67e5cb388da72189260142cd49e4e069","wallet_code":"'$TVM_WALLET_CODE'"}' --abi RootTokenContractNF.abi.json --sign keyfile.json --wc 0

OUTPUT:
error: Found argument 'b5ee ....... 3127d9' which wasn't expected, or isn't valid in this context

If I use an older version (TVM linker 0.1.0), the error disappears and the contrast deployed , but I still can't call deployWallet successfully.

 ./tonos-cli call 0:d91fb69726ef81b9b1f3f5f0803c3d7ad6a50a8a51d98f542268a70af3c31e6d deployWallet '{"workchain_id":0,"pubkey":"0xc2b0035df1e415384c9fdbdf879f50d086449c0dde9ea3aeae09ccfe33869f5a","tokens":"1","grams":0}' --sign keyfile.json --abi RootTokenContractNF.abi.json
Input arguments:
 address: 0:d91fb69726ef81b9b1f3f5f0803c3d7ad6a50a8a51d98f542268a70af3c31e6d
  method: deployWallet
  params: {"workchain_id":0,"pubkey":"0xc2b0035df1e415384c9fdbdf879f50d086449c0dde9ea3aeae09ccfe33869f5a","tokens":"1","grams":0}
     abi: RootTokenContractNF.abi.json
    keys: keyfile.json
lifetime: None
Generating external inbound message...
Error: failed to create inbound message: Inner SDK error.
 source: client
 code: 3012
 message: Create run message failed: Wrong data format:
null
 data: null

Error: 1

Lib versions

./tvm_linker --version
tvm_linker v0.3.0
BUILD_GIT_COMMIT: 02b13241bd3504b13f2e4352cbd6f27f0186be62
BUILD_GIT_DATE:   2021-05-19 12:14:59 +0300
BUILD_TIME:       2021-05-19 22:52:27 +0000
tondev info

C++ compiler

Component  Version  Available
---------  -------  -------------------------------------------------------
clang      7.4.10   7.4.10, 7.4.9, 7.4.8, 7.4.7, 7.4.5, 7.4.3, 7.4.1, 7.0.0

Solidity Compiler

Component  Available
---------  --------------------------------------------------------------
compiler   0.44.0, 0.43.0, 0.42.0, 0.41.0, 0.40.0, 0.39.0, 0.38.2, 0.38.1
linker     0.3.4, 0.3.3, 0.3.0, 0.1.0
stdlib     0.44.0, 0.43.0, 0.42.0, 0.41.0, 0.40.0, 0.39.0, 0.38.2, 0.38.1
root@cde18a6cd040:/ton/ton-labs-contracts/cpp/tokens-nonfungible/TVM-linker/tvm_linker/target/release# cat code.txt
Encoded: b5ee9c7201024d0100149a0002013403010101c0020043d00000000000000000000000000000000000000000000000000000000000000000200228ff0020c101f4a4205892f4a0e05f028a20ed53d90604010af4a420f4a105000002012037070202fd35080201203609013534c023a000b000265c1c08c055445540b67820408035c61c48f6600a013021d3008e8002c000997070235511015511d9e0d3ff7123d90b04986ded4006c30003d33fd31fd31f9501ed50db3022c1148e80e122c1108e80e122c10c8e80e102c00bf2a906f2a804f2e0445b06f9014073f910c000f268ed44d0d30030c000f27ef80070f8641d150d0c0170db3cc85122cecc7012cf0b00702101cf0b1f1af400c901ccc97019cf0b3f15cc13cccb07cbffcbff13ccc9ed54800b550155135f035501d93c02a622c10f8e80e102c00cf2a906f2a804f2e0443007f901541084f910c000f268ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d3008e8002c0009b7070702455215e105512d9e0fa40d37f7124d9140e029801d31ff404d106d12e5615be0fc300500fb0f27cf8238103e8a8820186a0a0561401b920f2bc70f8645610d74b8e8081034e2301bc8e80e1801361fa40d37f23705f205501552355135505d9110f01548e225bd37f20d74b8100802201b927e171baf2e043c000f2e042d52570551101551101d98102ce2401bc1000ca8e5723c12c8e2530801461fa4020d74b8100802201b925e171baf2e043c000f2e042d52370551101551101d92059015501e17114baf2e04303c000f2e042801361d52370550155f680136180126180146172801563801661d9e1801461fa402270705501d9018a705509801d615501e30403d37fd15619801361baf2e06425d30121c1039830c003f2d063f234e101c002f2b4d30001c0008e802059015501e001d30401d7180130215501d91201fe30d207d3ff30c000f2d06ff800f80f8100802656115501f40e6fa1c000f2d065c8762101cf0b03702201cf0b01c9d001ce19ce800e19cf0b1f2701cb7f561b01cbff5083fa0202c90cc000801d615502f40070fa0270fa0271cf0b611cccc973fb0081008045f0f45bc30071b0c8702101cf0b005155cb3f80176101cc80121300e66122ce8017615503a18012615501cc8015615502cc80146101cb0780136101cbff80146101cbff8e22305026cb1f13f400c95002ccc95003ccc9ed54800c55d0550f7280126380116501d92e21e07115cf0b00550f01ce1fcb7f2370705587550b550a550f550b551d801161801161801161d901feed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0008e4f30d31ff404d15bd170f8645f07550fd0d30101c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce71cf0b61800f800f13cf0b1f13ccc95002ccc970fb00015582552c5f0d01d92059015501e001fa40d37f595b2155014003fe22c1128e80e102c1118e80e1ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0008e5030d31ff404d15bd170f8645f06550fd0d30101c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce71cf0b618010801013cf0b1f13ccc95002ccc970fb0055205564552c5f0d01d9205901191716001c5501e001fa40d37f595b215501d901feed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0008e5230d31ff404d15bd170f8645f05801161d0d30101c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce71cf0b618011801113cf0b1f13cb07c95002ccc970fb0055305565552d5f0e01d92059015501e001fa40d37f595b180008215501d902fe02c1138e80e1ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0008e5430d31ff404d13001d1801761d0d30170f86401c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce71cf0b618012801213cf0b1f13cb7fc95002ccc970fb005590556b7380146380146501d920590155011b1a0018e001fa40d37f595b215501d901feed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0008e5330d31ff404d15bd170f8645f03801361d0d30101c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce71cf0b618013801313cf0b1f13cbffc95002ccc970fb0055505567552f80106501d92059015501e001fa40d37f591c000a5b215501d903fe22c1178e80e122c1158e80e1ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0008e5330d31ff404d15bd170f86430801661d0d30101c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce71cf0b618014801413cf0b1f13cec95002ccc970fb00556055887380136380136501d9251f1e00222059015501e001fa40d37f595b215501d9024202c1168e80e1ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d300222001ec8e7101d31ff404d15b04d170f8648e4b30801a61d0d30101c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce80157112cf0b61801513cf0b1f14ce12cb7fc901ccc970fb0055b0556d7380166380166501d92421e1c8810400cf0b0a70cf0bffc9d07055125b225502d902c0002100289b7070712455215e105512d9e0fa40d37f7024d90162ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0008e802059015501e001fa40d37f595b215501d92301f630d31ff404d102d170f8640bd37f30520cb9f2e0408100802101f4866fa16fa12dc2008e4a5f04801961d0d30101c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce71cf0b618016801613cf0b1f13cb7fc95002ccc970fb0055b0556d7380166380166501d92070705512015503e103c0002400a08e4c01f2d04081008053575501f47c6fa16fa1517759e30471561301bc8e1c02c000550fa52270550155b67280116301550e7280116301801261d9550255045b25550255045506550555065524e220d9038022c1198e80e102c1188e80e1ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d3008e8002c0009b7070712455215e105512d9e0fa40d37f7024d92c282601fe01d31ff404d15b04d170f8648e495f03801961d0d30101c002c801f2b0732101cf0b01702201cf0b01c9d001ce02fa40305002ce71cf0b618017801713cf0b1f13cec95002ccc970fb0055b0556d7380166380166501d98e19c8810400cf0b0a70cf0bffc9d00130210155035512015503d92521e00fd37f3012ba212f707027002455a6550b801161550c801161801261552fe2018a06f2a804f2e0443007f901541084f910c000f268ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0008e802059015501e001fa40d37f595b215501d929016a30d31ff404d102d12a5611be0bc300500bb0f27cf8238103e8a8820186a0a0561001b970218012615501e30401f2bc70f8642cd74b2a01e48e6a5bd37fd156115509baf2e06420c000f2d06ef800f80f81008053165501f40e6fa1c000f2d065c8712101cf0b0014ce12cb7f1ecb1f15f4005164ce7015cf0b005054cc05c95005ccc902cb3f18cc16cc14cb0712cbff18cbff13ccc9ed5480185520552455285f0901d98102ce2301bc2b00bc8e5122c12c8e25300ffa4020d74b8100802201b95613e171baf2e043c000f2e042d5561170551101551101d92059015501e17113baf2e04302c000f2e0420ed52f70550155b4550e550d550f801161801161d9e10ffa40561070705501d902a622c11b8e80e102c019f2a906f2a804f2e0443007f901541084f910c000f268ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d3008e8002c0009b7070702455215e105512d9e0fa40d37f7124d9332d01b401d31ff404d106d12e5615be0fc300500fb0f27cf8238103e8a8820186a0a0561401b920f2bc70f8645610d74b21c12c8e802059015501e17112baf2e04301c000f2e042801161d52270550155f48013617280126301801461d92e015a5f03550ffa4020d74b21c12c8e802059015501e17112baf2e04301c000f2e04201d522705511015511015503d92f015c5f03fa4020d74b8100802201b98e802059015501e17112baf2e04301c000f2e04201d522705511015511015503d930016e705506801a615501e30404d37f20d74b8100802201b98e802059015501e17112baf2e04301c000f2e04201d522705511015511015503d93101e85f03d37fd15617801161baf2e06421c000f2d06ef800c8762101cf0b03702201cf0b01c9d001ce801a12cf0b1f18ce12cb7f5076ce05c907c0005056fa0280176101f40070fa0270fa0271cf0b6116ccc973fb00c8702101cf0b005133cb3f51c1ce1bcc550f550bcc1fcc1dcb071bcbff1fcbff3200848e1f3050c9cb1f15f400c95009ccc95006ccc9ed54801955705519551c5f0c01d92221e07119cf0b0015ce13cb7f26707055225e105516551955165509550a550ad9017202c01bf2a93005f2a83002f2e0443005f901541062f910c000f268ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d30001c0003400f88e6930d31ff404d102d153aebe0bc300500bb0f27cf8238103e8a8820186a0a02e01b97021550f5501e30401f2bc70f86452b6baf2e064f800c85133ce12cc7013cf0b005199cb1ff400c901ccc95027cb3f15cc13cccb07cbff13cbffccc9ed54801b5955145f045501d92059015501e001fa40d37f595b215501d9020120363600053c8da00102df3802f801d0d30001c000f2b020d601d30096ed40ed50db3002c0008e80e03003d21f01c0fff800f2e068d31f21c11a9b30c01af2e06870595b01d9e101c00ef2e068d37f3020c000f2d069ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d3008e8002c0009b7070702455215e105512d9e0fa40d37f7124d93a3900fc01d31ff404d106d18b088100800180116155075502f41e6fa1c00071b0c8702101cf0b0080126121cb3f51c2ce5063a050a2cc550f550acc1fcc1dcb071bcbff19cbff8e1a3050aacb1f17f400c95009ccc95007ccc9ed547055805f0901d92321e17118cf0b0015ce13cb7f2570705506551455125505550655075507d904fc3023d70d1f6fa3c00098705955235f0501d9e03024d749c000f270c000977055215f0301d9e06d04d31f98705955235f0501d922c10e8e80e122c10d8e80e102c00b22e1ed44d0d30030c000f27ef80070f864db3cc85122cecc7012cf0b00702101cf0b1f1cf400c901ccc9701bcf0b3f15cc13cccb07cbffcbff15ccc945413c3b0014ed54800b55215f0301d901e820d74b8102072201bc21c2028e46ed4003d3ff20d74b21c12c8e1a5f03fa4020d74bc000f2d04330d4d105ed50551155685f0955012059015501e17112baf2e04301c000f2e04201d522705511015511015503d95121b08e80e13003d4d4d307d3ff27705f50551b55160155255548551b550dd93d01948101072401bc8e225bd3ff20d74b8101002201b92be171baf2e043c000f2e042d52970551101551101d95112b08e80e105d4d4d30728705f30551a551a0155160155075538551a550cd93e018c24c2078e225bd30720d74b8101002201b928e171baf2e043c000f2e042d52670551101551101d95113b08e80e106d4d428705f2055195519015505550a550b55295519550bd93f01fe8e1dd420d74b21c10826e171baf2e043c000f2e042d52470551101551101d98e588e193007d420d74b20c000f2d04371ba01c000b029e1d5013028d98e287117ba07c0005007b02570705505550155065502551555175517e108d501302801556155085508d927c1029727c002225501e2e127c000f2d043d92401e107d428400002d90168ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d3008e8002c0009b7070702455215e105512d9e0fa40d37f7124d942015c01d31ff404d106d1801461d300d300d300fa40302b01c70570f864c000801461d37f3001f2d06620c000f800f80f4301fc8e76c8702101cf0b0080156121cb3f80156101cc80146101cc51f2ce1ecc801261550ecb0780116101cbff09c000550f5509cbff8e1d30509ecb1f1cf400c9500bccc9500bccc9ed54800d55c0551e5f0f01d92221e07115cf0b001cce1acb7f2270705502551d550f5568550b550d550c550f550f550fd92059015501e044006a810080532b5501f40e6fa1c000f2e06d8b08810080015503550c5502f41e6fa1c00071b018a0550130225501553755055546550ad9027e22c11a8e80e102c00e22e1ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d3008e8002c0009b7070702455215e105512d9e0fa40d37f7124d94a4601fe01d31ff404d106d170f864801361d300d300d300fa4030801361d37f02d301c804d3ff3053f4ce2f01cc7016cf0b00702101cf0b1f801c6101f400c95006ccc9702601cf0b3f561701cc561601cc561501cb07561401cbff12cbffcc7115cf0b0104c952e5cc71cf0b0014cc70cf0b00c9f90021c1039830c003f2d063f234470140e101c002f2b402d30001c0008e802059015501e001d30401d7180130215501d94801ec30d207d3ff305003baf2e06720c000f2d06ef800f80f810080531b5501f40e6fa1c000f2e06d8b08810080015502550c5502f41e6fa1c000c87112b0702201cf0b0080176121cb3f80116124ce50c3a0550f5502cc801561550bcc80146101cc0cc000801361550ccb0780126101cbff80116101cbff4900888e1c305034cb1f16f400c95005ccc901ccc9ed54800e55c0550e5f0e01d92221e07117cf0b001fce1dcb7f2470705559551d01550d5509550b551c550c550f550f550fd9017202c01a22e1ed44d0d30001c000f2bfd33fd4d4d307d3ffd3ffd5fa40d4d5d3008e8002c0009b7070712455215e105512d9e0fa40d37f7024d94b01fc01d31ff404d106d1f8000ffa4070f864d37f3002f2d06a801361d300d300d300fa40305007c705c000f2d06b5b21c000f2d06e5222baf2e06c81008053255501f40e6fa1c000f2d065c8762101cf0b03702201cf0b01c9d001ce13ce800e13cf0b1f2301cb7f2a01cbff7013fa0202c98014615502f40070fa0270fa02714c0096cf0b61ccc98040fb0081008015f45bc30071b01ea1c8702101cf0b005122cb1f1ff400c9506ece14cc1cccc950a3cb3f18cc16cc14cb0712cbffcbff12ccc9ed54801a554055065f0601d9

Decoded:
StateInit
 split_depth: None
 special: None
 data: te6ccgEBAgEAKAABAcABAEPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg
 code: 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
 code_hash: d5dff1b22a569c2fe2efd34b510fac11f6cea73e9ba1c6ed2ffba9098832038f
 version: decoding failed: invalid utf-8 sequence of 1 bytes from index 0
 lib:  None

cd tvm_linker && cargo build --release

Running rustc --crate-name ton_types --edition=2018 /home/ilya/.cargo/git/checkouts/ton-labs-types-44487be4b4f492ad/da45b4f/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -Cembed-bitcode=no -C debuginfo=2 -C metadata=0371c1dceb6ef24c -C extra-filename=-0371c1dceb6ef24c --out-dir /home/ilya/TVM-linker/tvm_linker/target/debug/deps -L dependency=/home/ilya/TVM-linker/tvm_linker/target/debug/deps --extern base64=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libbase64-b4fa89014c9e32e6.rmeta --extern crc=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libcrc-2f0837ba68965e3f.rmeta --extern failure=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libfailure-78168c6ba513a415.rmeta --extern hex=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libhex-559ca24ac529256c.rmeta --extern lockfree=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/liblockfree-e1237ae9544de1af.rmeta --extern log=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/liblog-7eeaf9e08100c906.rmeta --extern num=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libnum-6e6af7762f91487f.rmeta --extern num_derive=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libnum_derive-ece29c0797da8aa0.so --extern num_traits=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libnum_traits-3df5953fd39d4127.rmeta --extern rand=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/librand-5c663e2922003c56.rmeta --extern sha2=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libsha2-4638de69313890cd.rmeta --cap-lints allow
error[E0277]: the trait bound [u8; 32]: std::convert::From<std::vec::Vec<u8>> is not satisfied
--> /home/ilya/.cargo/git/checkouts/ton-labs-types-44487be4b4f492ad/da45b4f/src/types.rs:130:17
|
130 | Ok(Self(bytes.try_into().unwrap()))
| ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait std::convert::From<std::vec::Vec<u8>> is not implemented for [u8; 32]
|
= note: required because of the requirements on the impl of std::convert::Into<[u8; 32]> for std::vec::Vec<u8>
= note: required because of the requirements on the impl of std::convert::TryFrom<std::vec::Vec<u8>> for [u8; 32]
= note: required because of the requirements on the impl of std::convert::TryInto<[u8; 32]> for std::vec::Vec<u8>

error[E0277]: the trait bound [u8; 32]: std::convert::From<std::vec::Vec<u8>> is not satisfied
--> /home/ilya/.cargo/git/checkouts/ton-labs-types-44487be4b4f492ad/da45b4f/src/types.rs:144:35
|
144 | let hash: [u8; 32] = data.try_into().unwrap();
| ^^^^^^^^ the trait std::convert::From<std::vec::Vec<u8>> is not implemented for [u8; 32]
|
= note: required because of the requirements on the impl of std::convert::Into<[u8; 32]> for std::vec::Vec<u8>
= note: required because of the requirements on the impl of std::convert::TryFrom<std::vec::Vec<u8>> for [u8; 32]
= note: required because of the requirements on the impl of std::convert::TryInto<[u8; 32]> for std::vec::Vec<u8>

error[E0277]: the trait bound [u8; 32]: std::convert::From<std::vec::Vec<u8>> is not satisfied
--> /home/ilya/.cargo/git/checkouts/ton-labs-types-44487be4b4f492ad/da45b4f/src/types.rs:175:14
|
175 | Self((0..32).map(|_| { rand::random::() }).collect::<Vec>().try_into().unwrap())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait std::convert::From<std::vec::Vec<u8>> is not implemented for [u8; 32]
|
= note: required because of the requirements on the impl of std::convert::Into<[u8; 32]> for std::vec::Vec<u8>
= note: required because of the requirements on the impl of std::convert::TryFrom<std::vec::Vec<u8>> for [u8; 32]
= note: required because of the requirements on the impl of std::convert::TryInto<[u8; 32]> for std::vec::Vec<u8>

error[E0277]: the trait bound [u8; 32]: std::convert::From<std::vec::Vec<u8>> is not satisfied
--> /home/ilya/.cargo/git/checkouts/ton-labs-types-44487be4b4f492ad/da45b4f/src/types.rs:224:21
|
224 | match value.try_into() {
| ^^^^^^^^ the trait std::convert::From<std::vec::Vec<u8>> is not implemented for [u8; 32]
|
= note: required because of the requirements on the impl of std::convert::Into<[u8; 32]> for std::vec::Vec<u8>
= note: required because of the requirements on the impl of std::convert::TryFrom<std::vec::Vec<u8>> for [u8; 32]
= note: required because of the requirements on the impl of std::convert::TryInto<[u8; 32]> for std::vec::Vec<u8>

error[E0599]: no method named as_slice found for enum std::convert::Infallible in the current scope
--> /home/ilya/.cargo/git/checkouts/ton-labs-types-44487be4b4f492ad/da45b4f/src/types.rs:226:56
|
226 | Err(value) => UInt256::from_le_bytes(value.as_slice())
| ^^^^^^^^ method not found in std::convert::Infallible

error[E0277]: the trait bound [u8; 32]: std::convert::From<std::vec::Vec<u8>> is not satisfied
--> /home/ilya/.cargo/git/checkouts/ton-labs-types-44487be4b4f492ad/da45b4f/src/cell/slice.rs:498:55
|
498 | let hash: [u8; 32] = self.get_next_bytes(32)?.try_into().unwrap();
| ^^^^^^^^ the trait std::convert::From<std::vec::Vec<u8>> is not implemented for [u8; 32]
|
= note: required because of the requirements on the impl of std::convert::Into<[u8; 32]> for std::vec::Vec<u8>
= note: required because of the requirements on the impl of std::convert::TryFrom<std::vec::Vec<u8>> for [u8; 32]
= note: required because of the requirements on the impl of std::convert::TryInto<[u8; 32]> for std::vec::Vec<u8>

error: aborting due to 6 previous errors

Some errors have detailed explanations: E0277, E0599.
For more information about an error, try rustc --explain E0277.
error: could not compile ton_types.

Caused by:
process didn't exit successfully: rustc --crate-name ton_types --edition=2018 /home/ilya/.cargo/git/checkouts/ton-labs-types-44487be4b4f492ad/da45b4f/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -Cembed-bitcode=no -C debuginfo=2 -C metadata=0371c1dceb6ef24c -C extra-filename=-0371c1dceb6ef24c --out-dir /home/ilya/TVM-linker/tvm_linker/target/debug/deps -L dependency=/home/ilya/TVM-linker/tvm_linker/target/debug/deps --extern base64=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libbase64-b4fa89014c9e32e6.rmeta --extern crc=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libcrc-2f0837ba68965e3f.rmeta --extern failure=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libfailure-78168c6ba513a415.rmeta --extern hex=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libhex-559ca24ac529256c.rmeta --extern lockfree=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/liblockfree-e1237ae9544de1af.rmeta --extern log=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/liblog-7eeaf9e08100c906.rmeta --extern num=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libnum-6e6af7762f91487f.rmeta --extern num_derive=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libnum_derive-ece29c0797da8aa0.so --extern num_traits=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libnum_traits-3df5953fd39d4127.rmeta --extern rand=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/librand-5c663e2922003c56.rmeta --extern sha2=/home/ilya/TVM-linker/tvm_linker/target/debug/deps/libsha2-4638de69313890cd.rmeta --cap-lints allow (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: build failed

Add `Cargo.lock`

You should use it to make builds reproducible. Link. You can't build an older version without it because newer dependencies are incompatible with old code.

builder for nixos failed with exit code 101

About NixOS https://nixos.org/

Step for reproduce

Setup

sh <(curl -L https://nixos.org/nix/install) --no-daemon
sudo chown -R $USER /nix

Checkout the Nixpkgs source tree

git clone [email protected]:NixOS/nixpkgs.git
cd nixpkgs

Create package

Create file: /pkgs/applications/blockchains/everos-linker/default.nix

{ fetchFromGitHub
, lib
, rustPlatform
, zstd
}:
rustPlatform.buildRustPackage rec {
  pname = "everos-linker";
  version = "0.15.31";

  # https://github.com/tonlabs/TVM-linker/tags
  src = fetchFromGitHub {
    owner = "tonlabs";
    repo = "TVM-linker";
    rev = "refs/tags/${version}";
    sha256 = "0im6gdgjv8sysibxsjnwm78n71yawjwwnrx7l8pmxfpxfr0pb7v3";
  };

  cargoSha256 = "1rn8s3iav265wqlv7ill5dzw4mwcc7d38s5w2c9q5v702q0vvvnc";

  nativeBuildInputs = [
    zstd
  ];

  meta = with lib; {
    description = "Linker takes Ever OS assembly source code of Everscale smart contract, compiles it and links its parts, adds standard selector and runtime and stores it into binary TVC file";
    homepage = "https://github.com/tonlabs/TVM-linker";
    license = licenses.asl20;
    maintainers = with maintainers; [ ilyar ];
    platforms = platforms.all;
  };
}

Edit index:

--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -277,6 +277,10 @@ with pkgs;
 
   cfn-nag = callPackage ../development/tools/cfn-nag { };
 
+  everos-linker = callPackage ../applications/blockchains/everos-linker { };
+

Build

nix-build  --show-trace -A everos-linker

Out

these derivations will be built:
  /nix/store/nl5nvq6mss9pf2h13253qbsbgd0b0rg2-everos-linker-0.15.31.drv
building '/nix/store/nl5nvq6mss9pf2h13253qbsbgd0b0rg2-everos-linker-0.15.31.drv'...
unpacking sources
unpacking source archive /nix/store/mzr7wqi5jm8h2xakgp9z075h4jkn6c2i-source
source root is source
Executing cargoSetupPostUnpackHook
unpacking source archive /nix/store/6c5rfwapn5q6p37mbyrzaniqpkslikxf-everos-linker-0.15.31-vendor.tar.gz
Finished cargoSetupPostUnpackHook
patching sources
Executing cargoSetupPostPatchHook
Validating consistency between /build/source//Cargo.lock and /build/everos-linker-0.15.31-vendor.tar.gz/Cargo.lock
Finished cargoSetupPostPatchHook
configuring
building
Executing cargoBuildHook
++ env CC_x86_64-unknown-linux-gnu=/nix/store/61zfi5pmhb0d91422f186x26v7b52y5k-gcc-wrapper-11.3.0/bin/cc CXX_x86_64-unknown-linux-gnu=/nix/store/61zfi5pmhb0d91422f186x26v7b52y5k-gcc-wrapper-11.3.0/bin/c++ CC_x86_64-unknown-linux-gnu=/nix/store/61zfi5pmhb0d91422f186x26v7b52y5k-gcc-wrapper-11.3.0/bin/cc CXX_x86_64-unknown-linux-gnu=/nix/store/61zfi5pmhb0d91422f186x26v7b52y5k-gcc-wrapper-11.3.0/bin/c++ cargo build -j 16 --target x86_64-unknown-linux-gnu --frozen --release
error: failed to get `ton_abi` as a dependency of package `tvm_linker v0.15.32 (/build/source)`

Caused by:
  failed to load source for dependency `ton_abi`

Caused by:
  Unable to update https://github.com/tonlabs/ton-labs-abi.git?tag=2.2.5

Caused by:
  the source https://github.com/tonlabs/ton-labs-abi.git requires a lock file to be present first before it can be
  used against vendored source code

  remove the source replacement configuration, generate a lock file, and then
  restore the source replacement configuration to continue the build
builder for '/nix/store/nl5nvq6mss9pf2h13253qbsbgd0b0rg2-everos-linker-0.15.31.drv' failed with exit code 101
error: build of '/nix/store/nl5nvq6mss9pf2h13253qbsbgd0b0rg2-everos-linker-0.15.31.drv' failed

Ref

everx-labs/ever-abi#117

Either there is a bug when signing or I am using the tool incorrectly

Given tools

  • solangsold v0.66.0
  • tvmostonos_cli v0.35.2
  • tvm-emu tvm_linker v0.19.5 subcommand test

Given contract

pragma ever-solidity >= 0.66.0;
contract c {
 constructor() public {}
}

Case 1.1: When

solang c.tsol
tvm-emu --abi-json c.abi.json --abi-method constructor --abi-params {} c

Got Exit 0

Case 1.2: When

solang c.tsol
tvmos getkeypair --output key.json
tvm-emu --sign key.json --abi-json c.abi.json --abi-method constructor --abi-params {} c

Got Exit 40

Given contract

pragma ever-solidity >= 0.66.0;
contract c {
  constructor() public {
    require(tvm.pubkey() != 0, 101);
    require(msg.pubkey() == tvm.pubkey(), 102);
    tvm.accept();
  }
}

Case 2.1: When

solang c.tsol
tvm-emu --abi-json c.abi.json --abi-method constructor --abi-params {} c

Got Exit 101

Case 2.2: When

solang c.tsol
tvmos getkeypair --output key.json
tvm-emu --sign key.json --abi-json c.abi.json --abi-method constructor --abi-params {} c

Got Exit 40

Error: failed to recognize selector form linker v0.17.3

npx everdev sol set --compiler 0.64.0 --linker 0.17.3 # or 0.18.1 or 0.18.0 
npx everdev sol create App
npx everdev sol compile App.sol
$HOME/.everdev/solidity/tvm_linker disasm text App.tvc

Out:

Error: failed to recognize selector
Error: 1

Compiling failure

Compiling failure v0.1.8
Compiling ton_abi v0.1.0 (https://github.com/tonlabs/ton-labs-abi.git#5b4cdc64)
Compiling ton_sdk v0.1.0 (https://github.com/tonlabs/ton-sdk.git#fd9462bf)
error[E0599]: no associated item named MAX found for type u64 in the current scope
--> /root/.cargo/git/checkouts/ton-sdk-11823a0ea1fdf592/fd9462b/ton_sdk/src/transaction.rs:237:53
|
237 | fees.total_output = if total_output <= u64::MAX as u128 { total_output as u64 } else { 0 };
| ^^^ associated item not found in u64
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope; perhaps add a use for it:
use rand::distributions::weighted::alias_method::Weight;
help: you are looking for the module in std, not the primitive type
|
237 | fees.total_output = if total_output <= std::u64::MAX as u128 { total_output as u64 } else { 0 };
| ^^^^^^^^^^^^^

error: aborting due to previous error

For more information about this error, try rustc --explain E0599.
error: could not compile ton_sdk.
warning: build failed, waiting for other jobs to finish...
error: build failed

The difference between README.md and actual behaviour

Hi!
This is stated in README.md in the 6) Disassembler section:
solidity and fun_c subcommands both disassemble a tvc produced by Solidity and FunC compilers respectively.

At the same time, when I try to do tvm-linker disasm solidity or tvm-linker disasm fun_c commands, it says me that such subcommands do not exist.

Did you forget to roll out these subcommands to the production or they remained from the rich past?

Cannot link - Error: internal function with id = 0 already exist

Ubuntu 18.04.4 LTS

solc, the solidity compiler commandline interface
Version: 0.6.3-develop.2020.11.10+commit.35637a12.mod.Linux.g++

TVM linker 0.1.0
COMMIT_ID: 9856546
BUILD_DATE: 2020-11-10 01:32:38 -0700
COMMIT_DATE: 2020-10-29 18:41:12 +0300
GIT_BRANCH: master
tvm_linker 0.1 ()

Compile 11_SimpleContract.sol

ubuntu@bitlox:~/ton/samples/solidity/compiled$ solc ../11_SimpleContract.sol 
Code was generated and saved to file 11_SimpleContract.code
ABI was generated and saved to file 11_SimpleContract.abi.json

Compiled:

ubuntu@bitlox:~/ton/samples/solidity/compiled$ ls
11_SimpleContract.abi.json  11_SimpleContract.code

Attempt to generate TVM files:

ubuntu@bitlox:~/ton/samples/solidity/compiled$ tvm_linker compile 11_SimpleContract.code --lib /usr/local/lib/stdlib_sol.tvm --abi-json 11_SimpleContract.abi.json
TVM linker 0.1.0
COMMIT_ID: 9856546f7eb15922c1fb3b07976c70c344931acf
BUILD_DATE: 2020-11-10 01:32:38 -0700
COMMIT_DATE: 2020-10-29 18:41:12 +0300
GIT_BRANCH: master
Error: line 257: internal function with id = 0 already exist
Error: 1

Same issue on macOS 10.15 Catalina, also same error regardless of the contract used.

can't disasm

linker can't disasm custom contract written in fift-asm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.