This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[package] | |
name = "rust-wasm-minimal" | |
version = "0.1.0" | |
edition = "2021" | |
[lib] | |
name = "rust_wasm_minimal" | |
crate-type = ["cdylib"] | |
[target.'cfg(not(target_arch = "wasm32"))'.dependencies] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[package] | |
name = "cfg-demo" | |
version = "0.1.0" | |
edition = "2021" | |
[dependencies] | |
# Essa biblioteca só sera incluída no código se a feature `feature_a` for habilitada. | |
rand = { version = "0.8.5", optional = true } | |
[features] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[package] | |
name = "wasm-executor" | |
version = "0.1.0" | |
edition = "2021" | |
[dependencies] | |
anyhow = "1.0.91" | |
wasmtime = { version = "26.0.0", default-features = false, features = ["cache", "cranelift", "wat", "parallel-compilation", "pooling-allocator"] } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// -- package.json -- | |
// "dependencies": { | |
// "wabt": "^1.0.36" | |
// } | |
/** | |
* The WAT code (WebAssembly Text Format) which must be compiled to WASM (binary). | |
* - Library used to compile: https://github.com/WebAssembly/wabt | |
* - WebAssembly instructions set: https://webassembly.github.io/spec/core/text/instructions.html | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// -- Cargo.toml -- | |
// [dependencies] | |
// rand = { version = "0.8.5" } | |
// const-hex = { version = "1.13.1" } | |
use rand::prelude::*; | |
// Tamanho do secret e do vetor de inicialização. | |
const BLOCK_SIZE: usize = 16; | |
#[allow(clippy::manual_memcpy)] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fn modpow(g: u32, exp: u128, n: u32) -> u32 { | |
let mut exponente = exp; | |
let mut resultado = 1; | |
let mut double = g; | |
while exponente > 0 { | |
if exponente % 2 == 1 { | |
resultado *= double; | |
resultado %= n; | |
} | |
exponente /= 2; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Author: Lohann Paterno Coutinho Ferreira | |
// | |
use num_bigint::BigUint; // ^0.4.6 | |
use num_traits::{One, Zero}; // ^0.2.19 | |
use num_integer::Integer; // ^0.1.46 | |
#[allow(clippy::unwrap_used, clippy::cast_possible_truncation)] | |
fn main() { | |
/// Decimal precision used when printing float and rational values. | |
const PRECISION: u32 = 32; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// EVM Interpreter Written in pure EVM assembly | |
// | |
// The bytecode is provided in the calldata, the code is interpreted, not deployed as a smart-contract. | |
// | |
// Motivation: Deploying a smart-contract is expensive, what if you just want to execute a tiny piece of | |
// custom logic, but without having to deploy a smart-contract? Then you can use this interpreter with delegatecall. | |
// Tested on https://www.evm.codes/playground | |
// | |
// @author Lohann Paterno Coutinho Ferreira | |
JUMPDEST // STOP 0x00 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.7.0 <0.9.0; | |
/** | |
* Workaround example on how to inject and execute arbitrary bytecode in solidity contract | |
* Currently only YUL supports verbatim: https://github.com/ethereum/solidity/issues/12067 | |
* But you cannot import Solidity code in YUL, or YUL code in solidity, so this workaround is necessary. | |
* It works as long the byte sequence `0x7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F00` appear in the runtime code. | |
* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Gas efficient SQRT method, computes floor(sqrt(x)). | |
// Constant gas cost of 355 | |
// | |
// For testing use this tool: https://www.evm.codes/playground?fork=cancun | |
// Author: Lohann Ferreira | |
PUSH0 | |
CALLDATALOAD | |
PUSH1 1 | |
DUP2 |
NewerOlder