Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wallet RPC Transfer method using different Account Indexes to transfer from always gives Not Enough Money Error available = 0.000000000000 #132

Open
macker4 opened this issue Aug 25, 2022 · 8 comments

Comments

@macker4
Copy link

macker4 commented Aug 25, 2022

I'm trying to use wallet rpc transfer with this library using different account indexes but I keep getting a N5tools5error16not_enough_moneyE: not enough money, available = 0.000000000000 error in wallet-rpc-log even though there is definately more than enough money in the account index I'm trying to transfer with. For example I use like this:

public function transfer($amount, $address, $accountTag = null){
try {
	$result = $this->monerod->get_accounts($accountTag);

	#Get all accounts belonging to the user
	$accounts = $result['subaddress_accounts'];

	#Collects all indexes of user-owned accounts
	$accountIndexes = [];

	foreach ($accounts as $index => $account) {
		$accountIndexes[$index] = $account['account_index'];
	}

	#Transfer the requested amount using only the balance of the accounts belonging to the user
	$this->monerod->transfer(($amount*1.000000000000), $address, $accountIndexes);
} catch (\Exception $exception) {
	session()->flash('error', 'Unable to transfer, please try again later!');

I don't get the exception, just the not enough money error in wallet rpc logs. I have checked to make sure that it is indeed using the correct index number and it is (n° 7) as below shows when i dd the ($accountIndexes) like:

$this->monerod->transfer(($amount*1.000000000000), $address, dd($accountIndexes));   returns:

array:1 [
  0 => 7
]
@macker4
Copy link
Author

macker4 commented Aug 25, 2022

As you can see index 7 has enough:

Accounts with tag: d289d97a-59ce-43bd-bf8d-7316d68568be
Tag's description:
          Account               Balance      Unlocked balance                 Label
         7 86yAuY        0.164664967836        0.164664967836
------------------------------------------------------------------------------------
          Total          0.164664967836        0.164664967836


Accounts with tag: 8fe11691-5515-4467-b570-d3ea6af44e6b
Tag's description:
          Account               Balance      Unlocked balance                 Label
         6 86FZSB        0.023600000000        0.023600000000
------------------------------------------------------------------------------------
          Total          0.023600000000        0.023600000000

Accounts with tag: This is an example account tag
Tag's description:
          Account               Balance      Unlocked balance                 Label
 *       0 4AreFg        0.046417768213        0.046417768213       Primary account
------------------------------------------------------------------------------------
          Total          0.046417768213        0.046417768213

The amount I'm trying to transfer is way smaller for example 0.006780000000 but still always gives the same error.

@macker4
Copy link
Author

macker4 commented Aug 25, 2022

And here is a snippet of the wallet-rpc log level 4:

contrib/epee/include/net/http_protocol_handler.inl:421	HTTP HEAD:
2022-08-20 14:15:21.643	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:421	Host: 127.0.0.1:18083
2022-08-20 14:15:21.643	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:421	Accept: */*
2022-08-20 14:15:21.643	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:421	Accept-Encoding: gzip,deflate
2022-08-20 14:15:21.643	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:421	Content-type: application/json
2022-08-20 14:15:21.643	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:421	Content-Length: 312
2022-08-20 14:15:21.643	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:421	
2022-08-20 14:15:21.643	[RPC0]	INFO	wallet.rpc	src/wallet/wallet_rpc_server.h:67	HTTP [127.0.0.1] POST /json_rpc
2022-08-20 14:15:21.643	[RPC0]	INFO	wallet.rpc	src/wallet/wallet_rpc_server.h:90	[127.0.0.1:39730 INC] Calling RPC method transfer
2022-08-20 14:15:21.643	[RPC0]	TRACE	wallet.rpc	src/wallet/wallet_rpc_server.cpp:1062	on_transfer starts
2022-08-20 14:15:21.648	[RPC0]	TRACE	net	contrib/epee/include/net/net_helper.h:460	READ ENDS: Success. bytes_tr: 478
2022-08-20 14:15:21.648	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_client.h:648	http_stream_filter::parse_cached_header(*)
2022-08-20 14:15:21.649	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v15 rules
2022-08-20 14:15:21.649	[RPC0]	WARNING	wallet.wallet2	src/wallet/wallet2.cpp:7457	Requested ring size 1 too low, using 16
2022-08-20 14:15:21.649	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v15 rules
2022-08-20 14:15:21.650	[RPC0]	TRACE	net	contrib/epee/include/net/net_helper.h:460	READ ENDS: Success. bytes_tr: 479
2022-08-20 14:15:21.650	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_client.h:648	http_stream_filter::parse_cached_header(*)
2022-08-20 14:15:21.650	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v5 rules
2022-08-20 14:15:21.651	[RPC0]	TRACE	net	contrib/epee/include/net/net_helper.h:460	READ ENDS: Success. bytes_tr: 479
2022-08-20 14:15:21.651	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_client.h:648	http_stream_filter::parse_cached_header(*)
2022-08-20 14:15:21.651	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v8 rules
2022-08-20 14:15:21.651	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v8 rules
2022-08-20 14:15:21.652	[RPC0]	TRACE	net	contrib/epee/include/net/net_helper.h:460	READ ENDS: Success. bytes_tr: 479
2022-08-20 14:15:21.652	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_client.h:648	http_stream_filter::parse_cached_header(*)
2022-08-20 14:15:21.652	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v4 rules
2022-08-20 14:15:21.652	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v8 rules
2022-08-20 14:15:21.652	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v15 rules
2022-08-20 14:15:21.652	[RPC0]	TRACE	net	contrib/epee/include/net/net_helper.h:460	READ ENDS: Success. bytes_tr: 479
2022-08-20 14:15:21.652	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_client.h:648	http_stream_filter::parse_cached_header(*)
2022-08-20 14:15:21.652	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v13 rules
2022-08-20 14:15:21.652	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v15 rules
2022-08-20 14:15:21.652	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v15 rules
2022-08-20 14:15:21.654	[RPC0]	TRACE	net	contrib/epee/include/net/net_helper.h:460	READ ENDS: Success. bytes_tr: 399
2022-08-20 14:15:21.655	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_client.h:648	http_stream_filter::parse_cached_header(*)
2022-08-20 14:15:21.655	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:10888	Using v8 rules
2022-08-20 14:15:21.655	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:9894	transfer: adding 0.006780000000, for a total of 0.006780000000
2022-08-20 14:15:21.655	[RPC0]	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:840	estimated bulletproof plus rct tx size for 1 inputs with ring size 16 and 2 outputs: 1492 (1120 saved)
2022-08-20 14:15:21.655	[RPC0]	ERROR	wallet.wallet2	src/wallet/wallet2.cpp:9922	needed_money + min_fee > balance_subtotal. THROW EXCEPTION: error::not_enough_money
2022-08-20 14:15:21.655	[RPC0]	WARNING	net.http	src/wallet/wallet_errors.h:915	/root/source/monero/src/wallet/wallet2.cpp:9922:N5tools5error16not_enough_moneyE: not enough money, available = 0.000000000000, tx_amount = 0.006780000000
2022-08-20 14:15:21.655	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:133	Exception: tools::error::not_enough_money
2022-08-20 14:15:21.655	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:134	Unwound call stack:
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [1]  0x10d) [0x55e3a0195ccd]:__cxa_throw+0x10d) [0x55e3a0195ccd]
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [2] monero-wallet-rpc(+0x38b58e) [0x55e39fffa58e] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [3] monero-wallet-rpc(+0x32ef3b) [0x55e39ff9df3b] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [4] monero-wallet-rpc(+0x1372df) [0x55e39fda62df] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [5] monero-wallet-rpc(+0x2387b8) [0x55e39fea77b8] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [6] monero-wallet-rpc(+0x268143) [0x55e39fed7143] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [7] monero-wallet-rpc(+0x216eed) [0x55e39fe85eed] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [8] monero-wallet-rpc(+0x19f10e) [0x55e39fe0e10e] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [9] monero-wallet-rpc(+0x19f507) [0x55e39fe0e507] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [10] monero-wallet-rpc(+0x26b860) [0x55e39feda860] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [11] monero-wallet-rpc(+0x26c1ad) [0x55e39fedb1ad] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [12] monero-wallet-rpc(+0x26c29e) [0x55e39fedb29e] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [13] monero-wallet-rpc(+0x15c105) [0x55e39fdcb105] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [14] monero-wallet-rpc(+0x15cadb) [0x55e39fdcbadb] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [15] monero-wallet-rpc(+0x178fe9) [0x55e39fde7fe9] 
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [16]  0x11bcd) [0x7f552162cbcd]:_64-linux-gnu/libboost_thread.so.1.65.1(+0x11bcd) [0x7f552162cbcd]
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [17]  0x76db) [0x7f551f2d36db]:_64-linux-gnu/libpthread.so.0(+0x76db) [0x7f551f2d36db]
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	    [18]  0x3f) [0x7f551effc61f]:_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f551effc61f]
2022-08-20 14:15:21.659	[RPC0]	INFO	stacktrace	src/common/stack_trace.cpp:172	
2022-08-20 14:15:21.660	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:604	HTTP_RESPONSE_HEAD: << 
2022-08-20 14:15:21.660	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:604	HTTP/1.1 200 Ok
2022-08-20 14:15:21.660	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:604	Server: Epee-based
2022-08-20 14:15:21.660	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:604	Content-Length: 109
2022-08-20 14:15:21.660	[RPC0]	TRACE	net.http	contrib/epee/include/net/http_protocol_handler.inl:604	Content-Type: application/json

@macker4 macker4 changed the title Wallet RPC Transfer using different Account Indexes gives Not Enough Money Error Wallet RPC Transfer method using different Account Indexes always gives Not Enough Money Error Aug 26, 2022
@macker4 macker4 changed the title Wallet RPC Transfer method using different Account Indexes always gives Not Enough Money Error Wallet RPC Transfer method using different Account Indexes to transfer from always gives Not Enough Money Error Aug 26, 2022
@macker4 macker4 changed the title Wallet RPC Transfer method using different Account Indexes to transfer from always gives Not Enough Money Error Wallet RPC Transfer method using different Account Indexes to transfer from always gives Not Enough Money Error available = 0.000000000000 Aug 26, 2022
@macker4
Copy link
Author

macker4 commented Aug 26, 2022

dd($accounts = $result['subaddress_accounts']); returns:

array:1 [
  0 => array:6 [
    "account_index" => 7
    "balance" => 153457477836
    "base_address" => "86yAuY8fnCUHHbJaUVW37MTpuqwgv6QMuRd3YsVhSRN9R9cRkjcBdWXFECBS******************"
    "label" => ""
    "tag" => "d289d97a-59ce-43bd-bf8d-7316d68568be"
    "unlocked_balance" => 153457477836
  ]
]

Or as a var_dump on var_dump($result = $this->monerod->get_accounts($accountTag)); returns:

array(3) {
  ["subaddress_accounts"]=>
  array(1) {
    [0]=>
    array(6) {
      ["account_index"]=>
      int(7)
      ["balance"]=>
      int(153457477836)
      ["base_address"]=>
      string(95) "86yAuY8fnCUHHbJaUVW37MTpuqwgv6QMuRd3YsVhSRN9R9cRkjcBdWXFECBS******************"
      ["label"]=>
      string(0) ""
      ["tag"]=>
      string(36) "d289d97a-59ce-43bd-bf8d-7316d68568be"
      ["unlocked_balance"]=>
      int(153457477836)
    }
  }
  ["total_balance"]=>
  int(153457477836)
  ["total_unlocked_balance"]=>
  int(153457477836)
}

@macker4
Copy link
Author

macker4 commented Aug 26, 2022

$this->monerod->transfer((dd($amount*1.000000000000)), $address, $accountIndexes); returns:

0.00654

@serhack
Copy link
Member

serhack commented Aug 26, 2022

Hi, thanks for getting in touch. I've edited a little bit the issue so it's clearer for us and it's easily to read. I'm guessing what the issue might be: how do you call transfer() method from Wallet RPC Library?

public function transfer($amount, $address = '', $payment_id = '', $mixin = 10, $account_index = 0, $subaddr_indices = '', $priority = 2, $unlock_time = 0, $do_not_relay = false, $ringsize = 16)

@macker4
Copy link
Author

macker4 commented Aug 26, 2022

@serhack sorry about the messy formatting from me, thanks for correcting it. Basically issue is that transfer doesn't go through when I'm using an index number other than the primary (0), like in this instance I'm trying to do transfer from index 7. And looking in rpc-wallet logs it has incorrect available = 0.000000000000 balance for the selected index number, the balance is actually 0.15346

@serhack
Copy link
Member

serhack commented Aug 26, 2022

I guess you should use $subaddr_indices since you're trying to send from a subaddress.

@macker4
Copy link
Author

macker4 commented Aug 27, 2022

Argh right. I'll try with adding $subaddr_indices and see if that works. Thank you for helping.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants