Heimdall is an advanced Ethereum smart contract toolkit for forensic and heuristic analysis.

Overview

Heimdall-RS

Heimdall is an advanced EVM toolkit which aims to make dealing with smart contracts on EVM based chains easier.

Installation & Usage

Heimdall's update and installation manager, bifrost, can be installed using the following command:

curl -L https://raw.githubusercontent.com/Jon-Becker/heimdall-rs/main/bifrost/install | bash

If you want to manually install bifrost, you can download the latest release from here.

Once you have installed bifrost, you can use it to install Heimdall using the following command from a new terminal:

bifrost

After compilation, the heimdall command will be available to use from a new terminal. For advanced options, see the bifrost documentation.

Having trouble? Check out the Troubleshooting section in the wiki.

Documentation

Documentation for all of heimdall-rs is available in the wiki.

Contributing

If you'd like to contribute to Heimdall or add a module, please open a pull-request with your changes, as well as detailed information on what is changed, added, or improved.

For more detailed information, see the contributing guide.

Issues

If you've found an issue or have a question, please open an issue here. All issues must follow their respective templates.

Credits

A list of all contributors can be found in the wiki.

Comments
  • [Bug]:  Cannot install Heimdall

    [Bug]: Cannot install Heimdall

    Component

    Installing heimdall

    Version

    N/A

    Please check the following

    • [X] This is not a duplicate issue
    • [X] I have checked the wiki and tried troubleshooting the issue

    Operating System

    macOS (Intel)

    Describe the issue you are facing

    After downloading bifrost ,

    solidity $curl -L https://raw.githubusercontent.com/Jon-Becker/heimdall-rs/main/bifrost/install | bash
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  1115  100  1115    0     0   3323      0 --:--:-- --:--:-- --:--:--  3550
    ######################################################################## 100.0%
    
    bifrost: Installation complete.
    Open a new terminal and run 'bifrost' to install Heimdall.
    

    I open a new terminal to install heimdall. unfortunately , it can't find the binary

    solidity $bifrost
    bash: bifrost: command not found
    
    bug 
    opened by Genysys 8
  • [Bug]: panic when decompile

    [Bug]: panic when decompile

    Component

    Heimdall CLI

    Version

    0.2.1

    Please check the following

    • [X] This is not a duplicate issue
    • [X] I have checked the wiki and tried troubleshooting the issue

    Operating System

    Linux

    Describe the issue you are facing

    I check https://github.com/Jon-Becker/heimdall-rs/issues/30 this issue and his contract is work well in 0.2.1 but my contract is not.

    environment : klaytn mainnet (ether hardfork and other klaytn contract is work well)

    Error contract : 0x4f5d9f3b17988aa047e6f1bc511fec0bf25691f4

    command :

    heimdall decompile 0x4f5d9f3b17988aa047e6f1bc511fec0bf25691f4 --include-sol -r https://public-node-api.klaytnapi.com/v1/cypress
    

    error :

    success: wrote disassembled bytecode to '/home/hj/output/0x4f5d9f3b17988aa047e6f1bc511fec0bf25691f4/disassembled.asm' .
    info: ⠙ analyzing '0x4d49e87d'                                                  fatal: thread 'main' encountered a fatal error: 'panicked at 'called `Option::unwrap()` on a `None` value', src/decompile/analyze.rs:117:36'!
    fatal: Stack Trace:
    
       0:     0x55a7754bf78f - backtrace::capture::Backtrace::new::hefe871ffee13979a
       1:     0x55a7755c1374 - heimdall::main::{{closure}}::h382a421ae6620b25
       2:     0x55a7758068b2 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h44df53ea2a13204b
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/alloc/src/boxed.rs:2001:9
                               std::panicking::rust_panic_with_hook::hfd45b6b6c12d9fa5
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:692:13
       3:     0x55a775806523 - std::panicking::begin_panic_handler::{{closure}}::hf591e8609a75bd4b
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:577:13
       4:     0x55a7758064be - std::sys_common::backtrace::__rust_end_short_backtrace::h81899558795e4ff7
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:137:18
       5:     0x55a775806491 - rust_begin_unwind
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:575:5
       6:     0x55a77547f7d2 - core::panicking::panic_fmt::h4235fa9b4675b332
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/panicking.rs:65:14
       7:     0x55a77547f8cc - core::panicking::panic::h9ced3cf2f605ba6a
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/panicking.rs:115:5
       8:     0x55a7755cc563 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
       9:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      10:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      11:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      12:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      13:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      14:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      15:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      16:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      17:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      18:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      19:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      20:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      21:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      22:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      23:     0x55a7755cba57 - heimdall::decompile::analyze::<impl heimdall::decompile::util::VMTrace>::analyze::h183fd40b5ac1e62a
      24:     0x55a7755a79e0 - heimdall::decompile::decompile::hf40dc136b5a01837
      25:     0x55a7755bfe3e - heimdall::main::h874210b1c8a7d14f
      26:     0x55a7755d32e3 - std::sys_common::backtrace::__rust_begin_short_backtrace::h8c3b0cd6d4a8ed1f
      27:     0x55a7755b4369 - std::rt::lang_start::{{closure}}::h6c25724aac55ad68
      28:     0x55a7757dff44 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h072eb4cd8da964ba
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/ops/function.rs:286:13
                               std::panicking::try::do_call::h8eca204fe9266946
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:483:40
                               std::panicking::try::h12574e1b7b2cbacb
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:447:19
                               std::panic::catch_unwind::hf71522d4448329d6
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panic.rs:137:14
                               std::rt::lang_start_internal::{{closure}}::h65b66ac9bff580f8
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/rt.rs:148:48
                               std::panicking::try::do_call::hfff61e33ca3db9f1
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:483:40
                               std::panicking::try::he48c8ecead279cad
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:447:19
                               std::panic::catch_unwind::hd510a26bfc950ccc
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panic.rs:137:14
                               std::rt::lang_start_internal::hc680b25eab888da9
                                   at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/rt.rs:148:20
      29:     0x55a7755bce94 - main
      30:     0x7f08c5d24d90 - __libc_start_call_main
                                   at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
      31:     0x7f08c5d24e40 - __libc_start_main_impl
                                   at ./csu/../csu/libc-start.c:392:3
      32:     0x55a77549d765 - _start
      33:                0x0 - <unknown>
    
    bug 
    opened by lidarbtc 3
  • Recommend a reasonable installation method first

    Recommend a reasonable installation method first

    Component

    Installing bifrost

    Version

    0

    Please check the following

    • [X] This is not a duplicate issue
    • [x] I have checked the wiki and tried troubleshooting the issue

    Operating System

    Windows

    Describe the issue you are facing

    This is a product designed for security researchers to study smart contracts, and you instal it by... piping curl to bash lol

    bug invalid 
    opened by fulldecent 2
  • [Bug]: Decompilation output is not written to decompiled.sol

    [Bug]: Decompilation output is not written to decompiled.sol

    Component

    Heimdall Modules

    Version

    0.1.5

    Please check the following

    • [X] This is not a duplicate issue
    • [X] I have checked the wiki and tried troubleshooting the issue

    Operating System

    Linux

    Describe the issue you are facing

    Should these lines in output.rs be uncommented to make it work?

    // write_lines_to_file(
    //     &decompiled_output_path,
    //     decompiled_output
    // );
    //
    // logger.info(&format!("wrote decompiled solidity to '{}' .", decompiled_output_path).to_string());
    
    invalid question 
    opened by mkumas 2
  • ✨ feat: heimdallibrary (expose decompiler as library)

    ✨ feat: heimdallibrary (expose decompiler as library)

    What was wrong?

    No access the decompiler within external rust code.

    What was changed?

    • Exposed the decompiler as a module (use heimdall::decompile;)
    • Exposed CLI flags as methods in a builder pattern (DecompileBuilder::new(BYTECODE).decompile();)
      • This just wraps the existing DecompilerArgs inside the builder for a nice interface.
    • Added an example to showcase use as library (cargo run --example decompile)
    • Added simple test using the bytecode from test: benchmark_decompile_simple.
    • Added basic docs for the builder
      • doctest set to no_run because the bytecode is truncated in the doc example: "7312/* snip */04ad"

    Examples

    Minimal use

    use heimdall::decompile::DecompileBuilder;
    
    const SOURCE: &'static str = "7312/* snip */04ad";
    
    DecompileBuilder::new(SOURCE)
        .decompile();
    

    Use of all builder (flag) methods:

    use heimdall::decompile::DecompileBuilder;
    
    const SOURCE: &'static str = "7312/* snip */04ad";
    
    DecompileBuilder::new(SOURCE)
        .default(false)
        .include_sol(false)
        .output("my_contract_dir")
        .rpc("https://127.0.0.1:8545")
        .skip_resolving(true)
        .verbosity(5)
        .decompile();
    

    Unchanged

    The decode method was not exposed because, unlike the decompile method, no files are emitted. It seemed less likely to be useful in the context of a library

    Formatting

    I did not run cargo fmt, as this produced changes across the codebase.

    Linting

    Clippy is happy, with some silencing with #[allow(dead_code)] on the builder pattern methods (which are not technically called).

    opened by perama-v 1
  • fix(decompile): use 32 byte hash for events to reduce collisions

    fix(decompile): use 32 byte hash for events to reduce collisions

    Description

    This PR reduces the number of collisions when decompiling contracts that contain events.

    Example

    The Transfer(address,address,uint256) event on USDC implementation contract (0xa2327a938febf5fec13bacfb16ae10ecbc4cbdcf) currently results in a collision.

    The current resolution request is: https://sig.eth.samczsun.com/api/v1/signatures?all=true&function=0xddf252ad

    With this update, we use the full 32 byte hash and the event api, to reduce the likelihood of collisions. https://sig.eth.samczsun.com/api/v1/signatures?all=true&event=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

    enhancement 
    opened by danyalprout 1
  • fix(decompile) restore write output to file

    fix(decompile) restore write output to file

    Decompile module didn't write output to the sol file:

    $ heimdall decompile -r https://rpc.ankr.com/eth 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D -o 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    success: disassembled 21943 bytes successfully.
    $ ls 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D/
    abi.json          bytecode.evm      disassembled.asm
    

    Fixed:

    $ cargo run --  decompile -r https://rpc.ankr.com/eth 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D -o 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        Finished dev [unoptimized + debuginfo] target(s) in 0.15s
         Running `target/debug/heimdall decompile -r 'https://rpc.ankr.com/eth' 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D -o 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D`
    success: disassembled 21943 bytes successfully.
    $ ls 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D/
    abi.json          bytecode.evm      decompiled.sol    disassembled.asm
    
    invalid 
    opened by al0x0508 1
  • [Question]: Add configuration option to set output directory

    [Question]: Add configuration option to set output directory

    Version

    heimdall 0.1.5

    Please check the following

    • [X] This is not a duplicate question
    • [X] I have checked the wiki beforehand

    Operating System

    macOS (Apple Silicon)

    Ask your question here

    The decompile command writes to an output/ directory inside the current working directory.

    It would be cool to be able to set the output directory in the configuration.

    question 
    opened by pmerkleplant 1
  • [Bug]: failed to open file

    [Bug]: failed to open file

    Component

    Heimdall CLI

    Version

    heimdall 0.1.0

    Please check the following

    • [x] This is not a duplicate issue
    • [x] I have checked the wiki and tried troubleshooting the issue

    Operating System

    macOS (Intel)

    Describe the issue you are facing

    when I run

    heimdall disassemble 0x0b061f45000000000000000000000000627a22ff70cb84e74c9c70e2d5b0b75af5a1dcb90000000000000000000000005992f10a5b284be845947a1ae1694f8560a89fa8000000000000000000000000ebe72cdafebc1abf26517dd64b28762df77912a90000000000000000000000008a90cab2b38dba80c64b7734e58ee1db38b8992e0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000012a900000000000000000000000000000000000000000000000000000000000012b00000000000000000000000000000000000000000000000000000000000000b8c0000000000000000000000000000000000000000000000000000000000001e7e00000000000000000000000000000000000000000000000000000000000010da0000000000000000000000000000000000000000000000000000000000001ed6000000000000000000000000000000000000000000000000000000000000256e0000000000000000000000000000000000000000000000000000000000000643000000000000000000000000000000000000000000000000000000000000119e0000000000000000000000000000000000000000000000000000000000001b1400000000000000000000000000000000000000000000000000000000000004e50000000000000000000000000000000000000000000000000000000000001a6800000000000000000000000000000000000000000000000000000000000024bb000000000000000000000000000000000000000000000000000000000000042b00000000000000000000000000000000000000000000000000000000000000b30000000000000000000000000000000000000000000000000000000000000fb10000000000000000000000000000000000000000000000000000000000001bfd00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000014830000000000000000000000000000000000000000000000000000000000001d01 
    

    I get this error

    error: failed to open file '0x0b061f45000000000000000000000000627a22ff70cb84e74c9c70e2d5b0b75af5a1dcb90000000000000000000000005992f10a5b284be845947a1ae1694f8560a89fa8000000000000000000000000ebe72cdafebc1abf26517dd64b28762df77912a90000000000000000000000008a90cab2b38dba80c64b7734e58ee1db38b8992e0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000012a900000000000000000000000000000000000000000000000000000000000012b00000000000000000000000000000000000000000000000000000000000000b8c0000000000000000000000000000000000000000000000000000000000001e7e00000000000000000000000000000000000000000000000000000000000010da0000000000000000000000000000000000000000000000000000000000001ed6000000000000000000000000000000000000000000000000000000000000256e0000000000000000000000000000000000000000000000000000000000000643000000000000000000000000000000000000000000000000000000000000119e0000000000000000000000000000000000000000000000000000000000001b1400000000000000000000000000000000000000000000000000000000000004e50000000000000000000000000000000000000000000000000000000000001a6800000000000000000000000000000000000000000000000000000000000024bb000000000000000000000000000000000000000000000000000000000000042b00000000000000000000000000000000000000000000000000000000000000b30000000000000000000000000000000000000000000000000000000000000fb10000000000000000000000000000000000000000000000000000000000001bfd00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000014830000000000000000000000000000000000000000000000000000000000001d01' .
    
    bug invalid 
    opened by Genysys 1
  • 🔀 merge: v2.0.1 changes

    🔀 merge: v2.0.1 changes

    • Limit branches to 1000 unique branches
      • Will eventually be a parameter
    • Implement natspec comments for deubgging
      • Argument natspec include potential types, in order of confidence.
    opened by Jon-Becker 0
  • [Bug]: BacktrackLimitExceeded

    [Bug]: BacktrackLimitExceeded

    Component

    Heimdall CLI

    Version

    0.2.0

    Please check the following

    • [X] This is not a duplicate issue
    • [X] I have checked the wiki and tried troubleshooting the issue

    Operating System

    Linux

    Describe the issue you are facing

    on mainnet:

    heimdall decompile 0x66AB180c5c9F01b2B78C29a201C7efbD9192ECe5 --include-sol
    

    produces following error:

    fatal: thread 'main' encountered a fatal error: 'panicked at 'called `Result::unwrap()` on an `Err` value: BacktrackLimitExceeded', src/decompile/util.rs:377:57'!
    
    bug 
    opened by schizoquant 3
Releases(0.2.3)
Owner
Jonathan Becker
Software Engineer & Decentralization Maxi
Jonathan Becker
The Fastest and most Advanced Ethereum Client

The Fastest and most Advanced Ethereum Client. » Download the latest release « Table of Contents Description Technical Overview Building 3.1 Building

Jay Lee 6 Feb 17, 2022
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.

foundry Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust. Foundry consists of: Forge: Ethe

Georgios Konstantopoulos 5.1k Jan 9, 2023
Ethereum (and Ethereum like) indexer using P2P message to fetch blocks and transactions

Ethereum P2P indexer This project is an indexer for Ethereum and Ethereum forks. It takes advantage of the ETH (Ethereum Wire Protocol) to fetch block

null 5 Nov 10, 2023
Retina is a network analysis framework that supports 100+ Gbps traffic analysis on a single server with no specialized hardware.

Retina Retina is a network analysis framework that enables operators and researchers to ask complex questions about high-speed (>100gbE) network links

Stanford Security Research 73 Jun 21, 2023
Substreams development kit for Ethereum chains, contains Firehose Block model and helpers as well as utilities for Ethereum ABI encoding/decoding.

Substreams Ethereum Substreams development kit for Ethereum chains, contains Rust Firehose Block model and helpers as well as utilities for Ethereum A

StreamingFast 15 Oct 25, 2022
Simple, reliable, open-source contract verification built for an L2 centric Ethereum ecosystem

Cove This repo contains the backend verification1 code for Cove, a simple, reliable, open-source contract verification built for an L2 centric Ethereu

ScopeLift 12 Apr 1, 2023
Simple template for building smart contract(Rust) and RPC Client(web3.js) on Solana (WIP) ⛏👷🚧⚠️

Solana BPF Boilerplate Simple template for building smart contract(Rust) and RPC Client(web3.js) on Solana This boilerplate provides the following. Si

ono 6 Jan 30, 2022
A smart-contract api and client for revm

revmup A smart contract and client API for revm. Features: Auto-generate contracts that interact directly with revm without needing ethers provider Co

Dave Bryson 17 Aug 6, 2023
Rust client to Opensea's APIs and Ethereum smart contracts

opensea.rs Rust bindings & CLI to the Opensea API and Contracts CLI Usage Run cargo r -- --help to get the top level help menu: opensea-cli 0.1.0 Choo

Georgios Konstantopoulos 226 Dec 27, 2022
Rust client to Seaport's APIs and Ethereum smart contracts(WIP)

Seaport-rs WIP - WORK IN PROGRESS. REFER TO https://github.com/Alcibiades-Capital/quay FOR PRODUCTION READY CODE I'm new to Rust and seek to be legend

Perelyn 21 Nov 29, 2022
Rust project for working with ETH - Ethereum transactions with Rust on Ganache and also deploy smart contracts :)

Just a test project to work with Ethereum but using Rust. I'm using plain Rust here, not Foundry. In future we will use Foundry. Hope you're already f

Akhil Sharma 2 Dec 20, 2022
Substrate NFT !ink smart contract base

Substrate !ink NFT simple implementation This is a simple working version of base NFT smart contract written using latest (as of this date) !ink 3.0.0

POLK4.NET 14 Dec 3, 2022
clockchain is a system for benchmarking smart contract execution times across blockchains.

Clockchain Clockchain is a research tool for benchmarking smart contract execution times across blockchains using Arcesco-- a block-chain agnostic ins

Zeke Medley 7 Oct 3, 2022
Testing a smart contract on the Solana blockchain

Environment Setup Install Rust from https://rustup.rs/ Install Solana from https://docs.solana.com/cli/install-solana-cli-tools#use-solanas-install-to

Maurice 1 Oct 25, 2021
clockchain is a system for benchmarking smart contract execution times across blockchains.

Clockchain Clockchain is a research tool for benchmarking smart contract execution times across blockchains using Arcesco-- a block-chain agnostic ins

zeke 7 Oct 3, 2022
The NFT smart contract powering xyz on Terra

xyz NFT Contract This repository contains the core NFT smart contract that implements xyz, a base layer for metaverses on the Terra blockchain. The xy

null 16 Sep 25, 2022
An example smart contract that builds on top of xyz

xyz Guestbook Tutorial Contract This repository contains an example smart contract that illustrates how to build on top of the xyz NFT contract. This

null 5 Apr 4, 2022
Smart Contract for Terra Name Service

TERRA NAME SERVICE CONTRACTS Terra Name Service is to create easy-to-remember names for your Terra address like ‘dokwon.ust’ instead of ‘terra1...whez

null 12 Nov 23, 2022
Vectis - Smart Contract Wallet

A smart contract wallet project to add functionality for users of DApps to manage their keys by allowing for recovery and account freeze, whilst preserving user control, and enabling relayer capability for gas provisioning

Nymlab 27 Dec 29, 2022