diff --git a/.claude/scheduled_tasks.lock b/.claude/scheduled_tasks.lock new file mode 100644 index 0000000..e4f091a --- /dev/null +++ b/.claude/scheduled_tasks.lock @@ -0,0 +1 @@ +{"sessionId":"29ac9fe4-5db1-4063-a411-35b7476540e7","pid":64232,"procStart":"Sun Sep 27 02:25:21 2026","acquiredAt":1790934861671} \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 1a2e2d6..e91c66a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -65,7 +65,9 @@ website or API. `tx` replies can carry `warnings`. A `lookalike_sender` warning means a transaction likely comes from an address made to look like one the receiver really uses (address poisoning). Surface it to the user, and never suggest -copying an address from transaction history. +copying an address from transaction history. https://dogechain.com/guides/copycat +explains the trick; https://dogechain.com/guides/track-a-payment helps with +"where is my payment?". ## Limits diff --git a/CHANGELOG.md b/CHANGELOG.md index b48278b..bd09f8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,13 @@ names, environment variables, exit codes, error codes, and the shape of ## [Unreleased] +## [0.7.1] - 2026-10-02 + +### Changed + +- The address-poisoning warning in `tx` links to Dogechain.com's guide on the + copycat trick. + ## [0.7.0] - 2026-10-02 ### Added @@ -152,7 +159,8 @@ names, environment variables, exit codes, error codes, and the shape of - Installers: Homebrew (`blockio/tap/dogechain`), npm (`dogechain`), shell script, PowerShell, and prebuilt binaries for macOS, Linux and Windows. -[Unreleased]: https://github.com/BlockIo/dogechain-cli/compare/v0.7.0...HEAD +[Unreleased]: https://github.com/BlockIo/dogechain-cli/compare/v0.7.1...HEAD +[0.7.1]: https://github.com/BlockIo/dogechain-cli/compare/v0.7.0...v0.7.1 [0.7.0]: https://github.com/BlockIo/dogechain-cli/compare/v0.6.1...v0.7.0 [0.6.1]: https://github.com/BlockIo/dogechain-cli/compare/v0.6.0...v0.6.1 [0.6.0]: https://github.com/BlockIo/dogechain-cli/compare/v0.5.2...v0.6.0 diff --git a/Cargo.lock b/Cargo.lock index 4be0fcd..ab4d228 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -342,7 +342,7 @@ dependencies = [ [[package]] name = "dogechain-cli" -version = "0.7.0" +version = "0.7.1" dependencies = [ "assert_cmd", "clap", diff --git a/Cargo.toml b/Cargo.toml index 0b59aa4..8f71320 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dogechain-cli" -version = "0.7.0" +version = "0.7.1" edition = "2024" rust-version = "1.88" description = "Command-line interface for Dogechain.com" diff --git a/src/commands.rs b/src/commands.rs index 42ab57a..0c582b7 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -22,6 +22,7 @@ use crate::time::{ago, now, utc, utc_date, utc_minute}; const KOINU_PER_DOGE: f64 = 100_000_000.0; const ADDRESS_PAGE_SIZE: u64 = 10; +const COPYCAT_GUIDE: &str = "https://dogechain.com/guides/copycat"; const RICHLIST_PAGE_SIZE: u64 = 100; pub fn run(cli: Cli, out: &mut dyn Write) -> Result<()> { @@ -352,7 +353,8 @@ fn show_warning(out: &mut dyn Write, w: &Warning) -> Result<()> { writeln!( out, "WARNING: likely address poisoning. The sender {sender} imitates {imitates}, \ - an address{victim}. Never copy an address from transaction history." + an address{victim}. Never copy an address from transaction history. \ + How the trick works: {COPYCAT_GUIDE}" )?; } (kind, _, _) => writeln!(out, "WARNING: {kind}")?, diff --git a/tests/cli.rs b/tests/cli.rs index a0de26f..62797e2 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -313,6 +313,7 @@ fn tx_shows_poisoning_warning_first() { "{text}" ); assert!(text.contains(&format!("The sender {LOOKALIKE} imitates {ADDR}"))); + assert!(text.contains("How the trick works: https://dogechain.com/guides/copycat")); assert!(text.contains("waiting in the mempool")); assert!(text.contains(&format!( "{ADDR} 40 DOGE (likely change back to the sender)"