Browse Source

Merge branch 'master' of github.com:leto/hushlist

master
Jonathan "Duke" Leto 5 years ago
parent
commit
4420d94f06
  1. 13
      bin/hushlist-send-file
  2. 7
      lib/Hush/Util.pm

13
bin/hushlist-send-file

@ -15,9 +15,14 @@ use JSON;
my ($from,$to,$filename,$amount) = @ARGV;
$amount ||= 0.0;
# this is for Sprout, Sapling will not have a limit except for block size(!)
my $max_size = 512 * 54 - 54;
die "You must specify a filename!" unless $filename;
die "File does not exist!" unless -e $filename;
my $filesize = -s $filename;
die "File is empty!" unless $filesize;
die "Currently this tool only supports files which fit in one transaction, up to $max_size bytes. Patches welcome!" unless ($filesize <= $max_size);
my $memo = read_file($filename);
my $length = length $memo;
@ -26,16 +31,14 @@ my $rpc = Hush::RPC->new;
#my $hex_memo = unpack("H*",$memo); # backend wants hex-encoded memo-field
#print "Hex memos length=" . length($hex_memo) . "\n";
if(0){
unless ( is_valid_zaddr($from) or is_valid_taddr($from) ) {
die "From address must be a valid taddr or zaddr!";
}
die "Invalid zaddr!" unless is_valid_zaddr($to);
}
my @hex_memos = unpack("(H512)*", $memo);
my @hex_memos = unpack("(H1024)*", $memo);
# hexify doubles the length
my $num_memos = int(@hex_memos / 2) + (@hex_memos % 2);
my $num_memos = int(@hex_memos);
#die Dumper ['array=', @hex_memos, "string=$hex_memo" ];
print "This file will be stored in $num_memos memo fields\n";
@ -49,7 +52,7 @@ for my $memo (@hex_memos) {
memo => $memo,
};
}
#die Dumper [ $recipients ];
die Dumper [ $recipients ];
my $opid = $rpc->z_sendmany($from,$recipients);
print "z_sendmany complete\n";

7
lib/Hush/Util.pm

@ -25,6 +25,7 @@ sub is_valid_zaddr {
#warn "zaddr=$z";
# TODO: only base58 is valid
# TODO: support Zcash Sapling addresses
if ($z =~ m/^zc[a-z0-9]{93}$/i) {
return 1;
} else {
@ -37,7 +38,10 @@ sub is_valid_taddr {
my ($t) = @_;
# TODO: only base58 is valid
if ($t =~ m/^t1[a-z0-9]{35}$/i) {
# HUSH/ZEC and most zec forks
if ($t =~ m/^t1[a-z0-9]{33}$/i) {
return 1;
} elsif ($t =~ m/^R[a-z0-9]{34}$/i) { # KMD and KMD asset chains
return 1;
} else {
return 0;
@ -48,6 +52,7 @@ sub is_valid_taddr {
sub is_valid_privkey {
my ($p) = @_;
$p =~ s!^hushlist://!!g;
# TODO: support KMD + new Sapling privkeys
if ($p =~ m/^SK[a-z0-9]{53}$/i) {
return 1;
} else {

Loading…
Cancel
Save