Alternative Free Identity System

Overview

Alfis

Builds

Alternative Free Identity System

This project represents a minimal blockchain without cryptocurrency, capable of sustaining any number of domain name zones and domains.

Screenshot

Screenshot

Building and running

On every OS

You can download and run already built binaries from releases, or you can build project yourself.

You can build Alfis by issuing cargo build and cargo run commands in a directory of cloned repository. If you want to build release version you need to do cargo build --release as usual.

On Windows

You don't need any additional steps to build Alfis, just stick to the MSVC version of Rust.

If you see an error about missing VCRUNTIME140.dll when running alfis you will need to install VC Redistributable from Microsoft.

If you want to use modern browser engine from Edge instead of old from IE, you need to build with this command: cargo build --release --features "edge" (or use corresponding build from releases).

On Windows (MINGW64)

If you'd rather use Gnu version of Rust you can build Alfis by these steps:

pacman -S git mingw64/mingw-w64-x86_64-rust mingw64/mingw-w64-x86_64-cargo-c
git clone https://github.com/Revertron/Alfis.git
cd Alfis
cargo build

On Linux

If you are building on Linux you must ensure that you have libwebkitgtk library installed. You can do it by issuing this command: sudo apt install libwebkit2gtk-4.0-dev (on Debian/Ubuntu and derivatives).

Comments
  • Feature request: export list of domains to DNS-resolvers compatible config format (unbound, dnsmasq, bind, etc)

    Feature request: export list of domains to DNS-resolvers compatible config format (unbound, dnsmasq, bind, etc)

    I want to use specialized professional dns-resolvers, like Unbound/dnsmasq/Bind/PowerDNS or etc, for resolving Alfis domains.

    Part 1 - export domain database to DNS-resolver compatible config file

    I have already a localhosted resolver (in my case - it is Unbound), which used for filtering domains by many adblock lists (where each list - separated config file). Also, this resolver used for routing domain zones, like onion/exit to Tor DNS-proxy, or i2p/b32 to I2P DNS-proxy.

    I want something like:

    • start sync of alfis domain lists by cron;
    • export domain zones (ygg, yy, etc) to config file, compatibled with one of most popular DNS-resolvers;
    • use specialized professional DNS-resolver for resolving Alfis domains, not an Alfis program.

    Result may be realized as cron job, like:

    alfis-sync -c /etc/alfis.conf && \
      alfis-export -c /etc/alfis.conf --format unbound > /etc/unbound/unbound.alfis.conf && \
      unbound-control reload
    

    Request 1: Please, improve export Alfis domain database to resolver-compatible config file.

    I know, that power of Alfis is in number of users, which run Alfis service. But if I use Alfis on my laptop, which configured to block all incoming connections, then no difference for network, how I use Alfis - by cron, or as a service, because my influence to domains database consistency is very insignificant.

    Part 2 - separate Alfis to two programs: Alfis-as-domain-manager and Alfis-as-domain-resolver

    Alfis as DNS-resolver is young program, was have (see #40), may be have now or will have an errors, which already resolved in professional DNS resolvers, like Unbound/dnsmasq/PowerDNS/Bind. Also, Alfis dublicate long-established habit of use: filter output domain names by special configured DNS-proxy (/etc/hosts, dnsmasq/unbound, PiHole). So, dns-resolving part of Alfis have dissonance with long time practice (domain filtering by adblock lists), have not advantage in domain resolving (comparing to professional DNS resolvers), and may be demanded by low count of users.

    Request 2: Please, separate Alfis to two programs: Alfis-as-domain-manager and Alfis-as-domain-resolver. Request 3: Please, remove domain-resolver part of Alfis from main executable program.

    opened by Bogdan107 11
  • Feature request: Info about the mining process

    Feature request: Info about the mining process

    Is it possible to display somewhere in this window how long the mining process has already been going on and the estimated / approximate time of the end of mining? And also, display during mining, which records will be added to the block.

    request

    And the same thing, when mining the key.

    question 
    opened by xaozai 10
  • Very unstable connection to nodes

    Very unstable connection to nodes

    Node connections are very unstable. They are interrupted and created every 2-3 seconds. At the same time, I use the network, visit sites, ping nodes without any problems. Connections are interrupted even between nodes inside my local network (IPv4).

    scr

    scr2

    scr3

    opened by xaozai 9
  • Security: disclosing real IP addresses of users

    Security: disclosing real IP addresses of users

    Some users register in the zone .ygg domains with IP addresses from the internet (See block 26.). Other users who will visit the site using this domain name will disclose their real IP addresses to the owner of the resource. Because It is not obvious that the .ygg zone can have addresses from the Internet. I think it is necessary for each zone to map a range of IP addresses for which a domain can be registered in this zone. Or something similar.

    opened by xaozai 6
  • When started with -v flag, Alfis tries to initialize the DNS port listening

    When started with -v flag, Alfis tries to initialize the DNS port listening

    It looks like when started with -v flag, it tries to initialize the DNS port listening. If another instance of Alfis is already running at this time, the "Failed to bind TCP (UDP) listener" error will occur.

    2021-03-30 23:25:40,119 ERROR [alfis::dns_utils] Failed to bind UDP listener: Io(Os { code: 98, kind: AddrInUse, message: "Address already in use" })
    2021-03-30 23:25:40,119 ERROR [alfis::dns_utils] Failed to bind TCP listener: Io(Os { code: 98, kind: AddrInUse, message: "Address already in use" })
    thread 'main' panicked at 'Can't bind to address: Os { code: 98, kind: AddrInUse, message: "Address already in use" }', src/p2p/network.rs:49:50
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by xaozai 4
  • Can't save key.

    Can't save key.

    I mined new credential key, when I got it, I pressed 'Save key' and get yad's small dialog box 'Save keys file' with buttons 'Cancel' and 'OK'. And they do nothing. I just can't save my key.

    'Events' tab don't show any errors or warnings at all.

    I believe my system's specific situations, since It's pretty minimal Linux setup.

    OS: Arch linux DE: KDE plasma with minimal packages Version: 6.11, from AUR

    Any Ideas how can I actually save key? (and if possible don't loose key that I've already mined)

    opened by Casul51 3
  • Add .key zone

    Add .key zone

    A .key zone would be useful for DNS based verification of information that users would like associated with a public key.

    For example:

    • pubkey to domain name mapping (like PTR records but for pubkeys).
    • routing/IP address
    • contact information
    • configuration information

    A side benefit is that this would also mitigate address collisions in yggdrasil as described here.

    Some questions: Should name registration be restricted to only the key that mined that block such that only alfis_pubkey.key can be registered? Or maybe restricted blocks should be a different zone such as .alfis? Could existing ed25519 (ssh?) keys be used to sign these blocks?

    Would lowering the minimum difficulty be useful? We don't want to spam the blockchain but we also don't want to have someone else steal a public key before a user can mine it, or for the user to wait too long before they can use it.

    opened by eatb33ts 3
  • Incorrect response for SOA request of Alfis zone

    Incorrect response for SOA request of Alfis zone

    # dig SOA ygg @318:1a0f:f6fd:77c::53
    ;; Got bad packet: FORMERR
    84 bytes
    75 33 85 83 00 01 00 00 00 01 00 00 03 79 67 67          u3...........ygg
    00 00 06 00 01 00 00 00 06 00 01 00 00 00 00 00          ................
    33 03 6e 73 30 07 6f 70 65 6e 6e 69 63 04 67 6c          3.ns0.opennic.gl
    75 65 00 0a 68 6f 73 74 6d 61 73 74 65 72 c0 25          ue..hostmaster.%
    78 76 a5 0b 00 00 07 08 00 00 03 84 00 09 3a 80          xv............:.
    00 00 0e 10                                              ....
    
    
    opened by r4sas 3
  • Can't start webview if no blockchain is present

    Can't start webview if no blockchain is present

    On Windows with default webwiew feature (not edge):

    2021-04-01 12:42:42,752 INFO  [alfis::Main] Starting ALFIS 0.3.7
    2021-04-01 12:42:42,753 INFO  [alfis::Main] Loaded settings: Settings { origin: "00000102C2F9BFD2803284D93327F089D60FC72A06F19AF2384567F2646B8348", key_file: "default.key", net: Net { peers: ["test-ip4.alfis.name:4244", "test-ip6.alfis.name:4244"], listen: "[::]:4244", public: true, yggdrasil_only: false }, dns: Dns { listen: "127.0.0.1:5300", threads: 20, forwarders: ["127.0.0.1:53"] }, mining: Mining { threads: 4 } }
    2021-04-01 12:42:42,794 INFO  [alfis::Main] No blocks found in DB
    2021-04-01 12:42:42,799 DEBUG [alfis::dns::authority] Authority dir (zones) not found, skipping.
    2021-04-01 12:42:42,804 DEBUG [alfis::p2p::network] Started node listener on [::]:4244
    2021-04-01 12:42:42,906 DEBUG [alfis::web_ui] Command {"cmd":"loaded"}
    2021-04-01 12:42:42,948 INFO  [alfis::web_ui] Current blockchain height is 0
    

    image After answering Yes or No you will get error and application will be stopped:

    2021-04-01 12:42:43,716 ERROR [alfis::web_ui] Something wrong with webview, exiting
    
    opened by r4sas 3
  • Can't open my old key

    Can't open my old key

    When I try to open my old key, it doesn't open, I get this:

    18:19:16 [WARN] alfis::keystore: Loaded key from OLD format! Please, resave it!
    18:19:16 [INFO] alfis::web_ui: Loaded keystore with keys: 72931D5EC6253820BE4EE8DC1745CF51B3ABB70917F57ACAE928DDF4F0C9ED3F, 09F53DECA7CDE8661F603072B4C1231FD63F4D80D6DFD31DDEA5631888F2A492
    thread 'webui' panicked at 'called `Result::unwrap()` on an `Err` value: Error { code: Some(1), message: Some("no such column: signing") }', src/blockchain/chain.rs:601:69
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    thread 'webui' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', src/web_ui.rs:200:44
    thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', src/p2p/network.rs:152:58
    
    opened by xaozai 2
  • Multiple keys in one instance

    Multiple keys in one instance

    I would like to be able to load multiple keys in a single ALFIS instance.

    For example, I've mined three domains into three different keys. To be able to sign blocks, I have to run three instances with different keys, but this is redundant. Three instances are not needed for either nogui DNS or mining...

    Thus, it would be good to run one nogui-instance on the server, which would work as DNS and sign blocks with three different keys.

    question 
    opened by xaozai 2
  • Bump base64 from 0.13.0 to 0.20.0

    Bump base64 from 0.13.0 to 0.20.0

    Bumps base64 from 0.13.0 to 0.20.0.

    Changelog

    Sourced from base64's changelog.

    0.20.0

    Breaking changes

    • Update MSRV to 1.57.0
    • Decoding can now either ignore padding, require correct padding, or require no padding. The default is to require correct padding.
      • The NO_PAD config now requires that padding be absent when decoding.

    0.20.0-alpha.1

    Breaking changes

    • Extended the Config concept into the Engine abstraction, allowing the user to pick different encoding / decoding implementations.
      • What was formerly the only algorithm is now the FastPortable engine, so named because it's portable (works on any CPU) and relatively fast.
      • This opens the door to a portable constant-time implementation (#153, presumably ConstantTimePortable?) for security-sensitive applications that need side-channel resistance, and CPU-specific SIMD implementations for more speed.
      • Standard base64 per the RFC is available via DEFAULT_ENGINE. To use different alphabets or other settings (padding, etc), create your own engine instance.
    • CharacterSet is now Alphabet (per the RFC), and allows creating custom alphabets. The corresponding tables that were previously code-generated are now built dynamically.
    • Since there are already multiple breaking changes, various functions are renamed to be more consistent and discoverable.
    • MSRV is now 1.47.0 to allow various things to use const fn.
    • DecoderReader now owns its inner reader, and can expose it via into_inner(). For symmetry, EncoderWriter can do the same with its writer.
    • encoded_len is now public so you can size encode buffers precisely.

    0.13.1

    • More precise decode buffer sizing, avoiding unnecessary allocation in decode_config.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump sqlite from 0.26.0 to 0.30.3

    Bump sqlite from 0.26.0 to 0.30.3

    Bumps sqlite from 0.26.0 to 0.30.3.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump uuid from 1.1.2 to 1.2.2

    Bump uuid from 1.1.2 to 1.2.2

    Bumps uuid from 1.1.2 to 1.2.2.

    Release notes

    Sourced from uuid's releases.

    1.2.2

    What's Changed

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.2.1...1.2.2

    1.2.1

    What's Changed

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.2.0...1.2.1

    1.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.1.2...1.2.0

    Commits
    • 60ca9af Merge pull request #646 from uuid-rs/cargo/1.2.2
    • d413ed6 prepare for 1.2.2 release
    • ce445a2 Merge pull request #645 from uuid-rs/fix/extern-alloc
    • b7c845f remove extern crate alloc
    • f5a29cf Merge pull request #640 from uuid-rs/ci/cleanups
    • 876e466 remove missing moniker from job names
    • 6944c0d simplify CI and unpin arbitrary
    • b87760d Merge pull request #637 from KodrAus/cargo/1.2.1
    • b21f0cb prepare for 1.2.1 release
    • cac99f5 Merge pull request #636 from KodrAus/fix/v1-breakage
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump mio from 0.8.4 to 0.8.5

    Bump mio from 0.8.4 to 0.8.5

    Bumps mio from 0.8.4 to 0.8.5.

    Changelog

    Sourced from mio's changelog.

    0.8.5

    Changed

    Fixed

    Commits
    • 0accf7d Release v0.8.5
    • c6cc563 deps: update to windows-sys 0.42.0
    • 26941af Fix clippy warnings (#1617)
    • 9830fca Round nonzero <1ms timeouts to 1ms for Windows too
    • a07049d Round up when converting timeout to ms for epoll_wait()
    • c6b5f13 Document the current Poll::poll timeout behaviour
    • 3340f6d Switch to GitHub Actions badge (#1601)
    • ef19161 Remove Azure pipeline CI
    • 4883ab4 Add Passed job to CI
    • 2510dd7 Run CI on v0.6.x and v0.7.x branches
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump thread-priority from 0.9.2 to 0.10.0

    Bump thread-priority from 0.9.2 to 0.10.0

    Bumps thread-priority from 0.9.2 to 0.10.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Test blockchain::chain::tests::load_and_check fails, unless using Cargo

    Test blockchain::chain::tests::load_and_check fails, unless using Cargo

    I'm getting a test failure when building without Cargo:

    running 23 tests
    test blockchain::hash_utils::tests::test_hash ... ignored
    test blockchain::hash_utils::tests::test_hash_is_good ... ignored
    test bytes::tests::test_deref ... ok
    08:04:36.456 [TRACE] alfis::dns::client: Using bootstraps: []
    test bytes::tests::test_tail_bytes ... ok
    test commons::test::test_check_domain ... ok
    test dns::hosts::tests::load_hosts ... ignored
    test commons::test::test_is_yggdrasil ... ok
    08:04:36.457 [TRACE] alfis::dns::client: Using bootstraps: []
    test dns::buffer::tests::test_write_qname ... ok
    test dns::buffer::tests::test_qname ... ok
    test dns::protocol::tests::test_packet ... ok
    test crypto::chacha::tests::test_chacha ... ok
    08:04:36.457 [TRACE] alfis::dns::client: Using bootstraps: []
    08:04:36.457 [TRACE] alfis::dns::client: Using bootstraps: []
    08:04:36.457 [TRACE] alfis::dns::client: Using bootstraps: []
    08:04:36.457 [TRACE] alfis::dns::client: Using bootstraps: []
    08:04:36.457 [TRACE] alfis::dns::server: Resolving: google.com, type A
    test dns::resolve::tests::test_recursive_resolver_with_no_nameserver ... ok
    08:04:36.457 [TRACE] alfis::dns::server: Resolving: www.facebook.com, type CNAME
    08:04:36.457 [TRACE] alfis::dns::server: Resolving: www.microsoft.com, type CNAME
    test dns::resolve::tests::test_forwarding_resolver ... ok
    test dns::resolve::tests::test_recursive_resolver_with_missing_a_record ... ok
    test dns::resolve::tests::test_recursive_resolver_match_order ... ok
    test dns::resolve::tests::test_recursive_resolver_successfully ... ok
    test keystore::tests::test_signature ... ok
    08:04:36.457 [TRACE] alfis::dns::server: Resolving: yahoo.com, type A
    08:04:36.457 [TRACE] alfis::dns::client: Using bootstraps: []
    08:04:36.457 [TRACE] alfis::dns::server: Resolving: yahoo.com, type A
    08:04:36.457 [ERROR] alfis::dns::server: Failed to resolve A yahoo.com: Client(Io(Custom { kind: NotFound, error: "Fail" }))
    test dns::server::tests::test_execute_query ... ok
    08:04:36.457 [DEBUG] alfis::blockchain::chain: Loaded last block: Block { index: 149, timestamp: 1620995471, version: 1, difficulty: 16, random: 1463594028, nonce: 721, hash: 099AC3782DCDC7969576DD23051A65C302BD13E762D0DE9BDD37AAF904E6A000, prev_block_hash: 4D43074D808A68AB43316E2FC890F3BBAF7BF67198076B63DB1B41A9EEEF0000, pub_key: 268E47DD5268A2EA8BC36668D2E00594E76ACD5CACA7CBBAB9F6E63BF75C4A82, signature: 3A841A49FD0E94FA6FC35978347577FEBE54766A388C6194AE48F3E8F7EEE864585E4F6D11A7A67D883C49C83CF178D2CFA683F7073B38956E5F795569C06A05, transaction: None, hash_good: RefCell { value: false } }
    08:04:36.457 [INFO ] alfis::blockchain::chain: Local blockchain height is 149, starting full blockchain check...
    08:04:36.457 [DEBUG] alfis::blockchain::chain: Checking block 1
    test crypto::crypto_box::tests::hide_reveal ... ok
    08:04:36.457 [DEBUG] alfis::blockchain::chain: Block 1 with hash 0000001D2A77D63477172678502E51DE7F346061FF7EB188A2445ECA3FC0780E is good!
    08:04:36.457 [DEBUG] alfis::blockchain::chain: Checking block 2
    08:04:36.457 [DEBUG] alfis::blockchain::chain: Loaded last block: Block { index: 149, timestamp: 1620995471, version: 1, difficulty: 16, random: 1463594028, nonce: 721, hash: 099AC3782DCDC7969576DD23051A65C302BD13E762D0DE9BDD37AAF904E6A000, prev_block_hash: 4D43074D808A68AB43316E2FC890F3BBAF7BF67198076B63DB1B41A9EEEF0000, pub_key: 268E47DD5268A2EA8BC36668D2E00594E76ACD5CACA7CBBAB9F6E63BF75C4A82, signature: 3A841A49FD0E94FA6FC35978347577FEBE54766A388C6194AE48F3E8F7EEE864585E4F6D11A7A67D883C49C83CF178D2CFA683F7073B38956E5F795569C06A05, transaction: None, hash_good: RefCell { value: false } }
    08:04:36.457 [WARN ] alfis::blockchain::chain: Error parsing DomainData from Transaction { class: "domain", identity: A2F01B73E289FFDA8418E2C48CDA12E5B08BF71D692C6793E52E158B44C73149, confirmation: FF08256BD9FC21F87FFA1CB594F63233A46289096E063F86D2B8B4CE5649BFDD, signing: 6E2482A41083C1F4A29EC8126AFAD4EC2F9E8390826DA4523E7783AA5B3464FF, encryption: 3137525B480FD3F6A5724B777C2D4EA5871CEEE4A2DD4D380EC366E58708E60E, data: "{\"encrypted\":\"BB4F313D7365142A43A1573F3638C28BD2D3BF8061375C379A2FC93647184265CD5E7B52688657C03350EC0AF99A31638C316F968FE9AF1741C6A1676842FC8F8758A73A\",\"zone\":\"ygg\",\"records\":[{\"type\":\"AAAA\",\"domain\":\"@\",\"addr\":\"301:2923::1\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"*\",\"addr\":\"301:2923::1\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test1\",\"addr\":\"300::1\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test2\",\"addr\":\"300::2\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test3\",\"addr\":\"300::3\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test4\",\"addr\":\"300::4\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test5\",\"addr\":\"300::5\",\"ttl\":3600}]}" }
    08:04:36.457 [WARN ] alfis::blockchain::chain: Block difficulty is lower than needed: 24 < 4294967295
    08:04:36.457 [ERROR] alfis::blockchain::chain: Block 2 is bad:
    Block { index: 2, timestamp: 1620520297, version: 1, difficulty: 24, random: 326969696, nonce: 104109, hash: 8713EB989FF526ADEE0EEC744B8BC72CA41815D6AD9627135372CD9E91000000, prev_block_hash: 0000001D2A77D63477172678502E51DE7F346061FF7EB188A2445ECA3FC0780E, pub_key: 6E2482A41083C1F4A29EC8126AFAD4EC2F9E8390826DA4523E7783AA5B3464FF, signature: C70D7CBDEDF387A90947840C9A3AF89CB1C7C58C4B1BCE1D6784C4879DA250969E27E85CF60232CE10BA8C5CEF1E262A8CB4147F11B38BC9CBC45CCAE3F0E809, transaction: Some(Transaction { class: "domain", identity: A2F01B73E289FFDA8418E2C48CDA12E5B08BF71D692C6793E52E158B44C73149, confirmation: FF08256BD9FC21F87FFA1CB594F63233A46289096E063F86D2B8B4CE5649BFDD, signing: 6E2482A41083C1F4A29EC8126AFAD4EC2F9E8390826DA4523E7783AA5B3464FF, encryption: 3137525B480FD3F6A5724B777C2D4EA5871CEEE4A2DD4D380EC366E58708E60E, data: "{\"encrypted\":\"BB4F313D7365142A43A1573F3638C28BD2D3BF8061375C379A2FC93647184265CD5E7B52688657C03350EC0AF99A31638C316F968FE9AF1741C6A1676842FC8F8758A73A\",\"zone\":\"ygg\",\"records\":[{\"type\":\"AAAA\",\"domain\":\"@\",\"addr\":\"301:2923::1\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"*\",\"addr\":\"301:2923::1\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test1\",\"addr\":\"300::1\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test2\",\"addr\":\"300::2\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test3\",\"addr\":\"300::3\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test4\",\"addr\":\"300::4\",\"ttl\":3600},{\"type\":\"AAAA\",\"domain\":\"test5\",\"addr\":\"300::5\",\"ttl\":3600}]}" }), hash_good: RefCell { value: false } }
    08:04:36.457 [INFO ] alfis::blockchain::chain: Truncating database from block 2...
    test blockchain::chain::tests::check_serde ... ok
    08:04:36.485 [DEBUG] alfis::blockchain::chain: Loaded last block: Block { index: 1, timestamp: 1620509674, version: 1, difficulty: 28, random: 3044569081, nonce: 58784, hash: 0000001D2A77D63477172678502E51DE7F346061FF7EB188A2445ECA3FC0780E, prev_block_hash: , pub_key: 9B890FBB8B862CCC12EA18E2F93D5D43103BE217D90FA1B296351C9C27B1BDA3, signature: CC4C06DA2F174A6CE2556C5B4D1539218EFB396F8BBBE0FE3B2D4332E1E1C4BB48AC92D70BC16AF1E55E74900AFD53B79A4BC45377665FB434AE9610168D2409, transaction: Some(Transaction { class: "origin", identity: , confirmation: , signing: 9B890FBB8B862CCC12EA18E2F93D5D43103BE217D90FA1B296351C9C27B1BDA3, encryption: 61899D093FBA4D2F0A5F4E523B26C597ACACEFE4BA41F9CA73DB652598433097, data: "{\"zones\":\"C995CDCE7000ECC89FB9B942E78CC7C5F0D8B03B35B0E835B510D756356CAD12\"}" }), hash_good: RefCell { value: false } }
    08:04:36.485 [DEBUG] alfis::blockchain::chain: Last block after chain check: Some(Block { index: 1, timestamp: 1620509674, version: 1, difficulty: 28, random: 3044569081, nonce: 58784, hash: 0000001D2A77D63477172678502E51DE7F346061FF7EB188A2445ECA3FC0780E, prev_block_hash: , pub_key: 9B890FBB8B862CCC12EA18E2F93D5D43103BE217D90FA1B296351C9C27B1BDA3, signature: CC4C06DA2F174A6CE2556C5B4D1539218EFB396F8BBBE0FE3B2D4332E1E1C4BB48AC92D70BC16AF1E55E74900AFD53B79A4BC45377665FB434AE9610168D2409, transaction: Some(Transaction { class: "origin", identity: , confirmation: , signing: 9B890FBB8B862CCC12EA18E2F93D5D43103BE217D90FA1B296351C9C27B1BDA3, encryption: 61899D093FBA4D2F0A5F4E523B26C597ACACEFE4BA41F9CA73DB652598433097, data: "{\"zones\":\"C995CDCE7000ECC89FB9B942E78CC7C5F0D8B03B35B0E835B510D756356CAD12\"}" }), hash_good: RefCell { value: false } })
    test blockchain::chain::tests::load_and_check ... FAILED
    test commons::simplebus::tests::test1 ... ok
    test dns::cache::tests::test_cache ... ok
    
    failures:
    
    ---- blockchain::chain::tests::load_and_check stdout ----
    thread 'blockchain::chain::tests::load_and_check' panicked at 'assertion failed: `(left == right)`
      left: `1`,
     right: `149`', src/blockchain/chain.rs:1136:9
    stack backtrace:
       0:     0x7ffff7cff95b - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h190bc4e71a974fd5
       1:     0x7ffff7d5acfc - core::fmt::write::h5ab597cdd0c00db2
       2:     0x7ffff7cb8701 - <unknown>
       3:     0x7ffff7cdbc6e - <unknown>
       4:     0x7ffff7cdb952 - std::panicking::default_hook::hcffd5d909668cc52
       5:     0x7ffff7cdc2ae - std::panicking::rust_panic_with_hook::h67db5ff340e389bf
       6:     0x7ffff7d00277 - <unknown>
       7:     0x7ffff7cffa74 - <unknown>
       8:     0x7ffff7cdbdb2 - rust_begin_unwind
       9:     0x7ffff7cadff3 - core::panicking::panic_fmt::h4b9cfd185dab4fab
      10:     0x7ffff7d5e098 - core::panicking::assert_failed_inner::h93b1d9d94cf5a7fc
      11:     0x55555559e1db - core::panicking::assert_failed::h1264aa6a673ae4fc
                                   at /tmp/guix-build-rust-1.60.0.drv-0/rustc-1.60.0-src/library/core/src/panicking.rs:182:5
      12:     0x5555555c6b7d - alfis::blockchain::chain::tests::load_and_check::hf6bc399ca7bc5fcf
                                   at /tmp/guix-build-antioxidated-alfis-0.8.2.drv-0/source/src/blockchain/chain.rs:1136:9
      13:     0x7ffff7e20723 - <unknown>
      14:     0x7ffff7e208e4 - <unknown>
      15:     0x7ffff7e1380d - <unknown>
      16:     0x7ffff7e34d2f - <unknown>
      17:     0x7ffff7cd4233 - <unknown>
      18:     0x7ffff79b93aa - start_thread
      19:     0x7ffff7a39f7c - clone3
      20:                0x0 - <unknown>
    
    
    failures:
        blockchain::chain::tests::load_and_check
    
    test result: FAILED. 19 passed; 1 failed; 3 ignored; 0 measured; 2 filtered out; finished in 1.00s
    

    For another test failure I encountered, downgrading the dependencies to what's in the Cargo.toml solved things, but not for this one.

    opened by emixa-d 1
Releases(v0.8.3)
A prototype implementation of the Host Identity Protocol v2 for bare-metal systems, written in pure-rust.

Host Identity Protocol for bare-metal systems, using Rust I've been evaluating TLS replacements in constrained environments for a while now. Embedded

null 31 Dec 12, 2022
an extended polynomial identity language (PIL) in rust

powdr an extended polynomial identity language (PIL) in rust Ideas This is a random list of ideas that help designing the language. Most if this is he

null 4 Jan 7, 2023
QuickDash A modern alternative to QuickSFV using Rust.

QuickDash A modern alternative to QuickSFV using Rust. It's supports BLAKE3 and BLAKE2 hashes, CRC32, MD5, SHA1, SHA2, SHA3, xxHash The docs for user

null 11 Nov 9, 2022
kloak-rs: alternative implementation of kloak

An anti keystroke deanonymization tool that introduces random delays between key presses and releases to deter adversaries that use keystroke timing for identification.

Cliff Maceyak 4 Aug 22, 2022
ASURA implementation in Rust. A better alternative of consistent-hashing.

ASURA implementation in Rust. A better alternative of consistent-hashing.

Akira Hayakawa 4 May 30, 2022
Alternative client for Substrate-based chains.

Lightweight Substrate and Polkadot client. Introduction smoldot is an alternative client of Substrate-based chains, including Polkadot. There exists t

null 14 Feb 16, 2023
Alternative Mizar proof checker written in Rust

Mizar proof checker This is a (still experimental) proof checker for the Mizar language. To compile the project, get Rust 1.67 or later (https://rustu

Mario Carneiro 16 Apr 13, 2023
a simple rust service for Scheduling commands execution on time basis, an easy alternative to cron

Tasker A Simple crate which provides a service and a configuration API for genrating commands based tasks ,on time basis. Installation build from sour

Daniel Madmon 5 Jun 1, 2023
Proof-of-concept Typst webapp alternative

Proof-of-Concept Typst Webapp Alternative With the following features: Collaborative editing (using operational-transform and referenced from ekzhang/

Matt Fellenz 3 Nov 7, 2023
Local blockchain for Free TON DApp development and testing.

TON OS Startup Edition Local blockchain for Free TON DApp development and testing. Have a question? Get quick help in our channel: TON OS Startup Edit

TON Labs 35 Jan 2, 2023
HyperCube is a free and open source blockchain project for everyone to use.

XPZ Public Chain HyperCube is a free and open source blockchain project for everyone to use. 日本語 简体中文 正體中文 HyperCube Wiki Wha is HyperCube HyperCube i

null 949 Dec 31, 2022
The free password manager for power users

The free password manager for power users

null 312 Oct 22, 2022
Web scraper written in Rust for extracting paid HTML templates for free.

HTML Template Scraper This tool provides a convenient solution by allowing you to access and download a wide range of HTML website templates, includin

Dilshad 4 Jun 29, 2023
A cryptographically verifiable code review system for the cargo (Rust) package manager.

A cryptographically verifiable code review system for the cargo (Rust) package manager.

crev - Code REView system 1.8k Jan 2, 2023
Keyhouse is a skeleton of general-purpose Key Management System written in Rust.

Keyhouse Keyhouse is a skeleton of general-purpose Key Management System. Keyhouse is not an off-the-shelf system, and it's not ready for production.

Bytedance Inc. 148 Jan 1, 2023
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
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
An encrypted multi client messaging system written in pure Rust

?? Preamble This is a pure Rust multi-client encrypted messaging system, also known as Edode's Secured Messaging System. It is an end-to-end(s) commun

Edode 3 Sep 16, 2022
Dione is an anonymize and encrypted messaging system build on top on a peer to peer layer.

Secure and Anonymous Messaging WARNING: Currently Dione is not ready to be used nor does it fulfill its goal of being an anonymous messenger. In order

Dione 41 Jan 5, 2023