Merge pull request #627 from dashpay/v0.12.0.x

release v0.12.0.55
This commit is contained in:
Holger Schinzel 2015-09-28 17:49:30 +02:00
commit c30a0aa592
22 changed files with 5448 additions and 41 deletions

View File

@ -3,7 +3,7 @@ AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 0) define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 12) define(_CLIENT_VERSION_MINOR, 12)
define(_CLIENT_VERSION_REVISION, 0) define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 53) define(_CLIENT_VERSION_BUILD, 55)
define(_CLIENT_VERSION_IS_RELEASE, true) define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2015) define(_COPYRIGHT_YEAR, 2015)
AC_INIT([Dash Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[info@dashpay.io],[dash]) AC_INIT([Dash Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[info@dashpay.io],[dash])

View File

@ -649,6 +649,7 @@ TRANSLATIONS += src/qt/locale/dash_bg.ts \
src/qt/locale/dash_fi.ts \ src/qt/locale/dash_fi.ts \
src/qt/locale/dash_fr.ts \ src/qt/locale/dash_fr.ts \
src/qt/locale/dash_it.ts \ src/qt/locale/dash_it.ts \
src/qt/locale/dash_ja.ts \
src/qt/locale/dash_pl.ts \ src/qt/locale/dash_pl.ts \
src/qt/locale/dash_pt.ts \ src/qt/locale/dash_pt.ts \
src/qt/locale/dash_ru.ts \ src/qt/locale/dash_ru.ts \

View File

@ -10,6 +10,7 @@ QT_TS = \
qt/locale/dash_fi.ts \ qt/locale/dash_fi.ts \
qt/locale/dash_fr.ts \ qt/locale/dash_fr.ts \
qt/locale/dash_it.ts \ qt/locale/dash_it.ts \
qt/locale/dash_ja.ts \
qt/locale/dash_pl.ts \ qt/locale/dash_pl.ts \
qt/locale/dash_pt.ts \ qt/locale/dash_pt.ts \
qt/locale/dash_ru.ts \ qt/locale/dash_ru.ts \

View File

@ -17,7 +17,7 @@
#define CLIENT_VERSION_MAJOR 0 #define CLIENT_VERSION_MAJOR 0
#define CLIENT_VERSION_MINOR 12 #define CLIENT_VERSION_MINOR 12
#define CLIENT_VERSION_REVISION 0 #define CLIENT_VERSION_REVISION 0
#define CLIENT_VERSION_BUILD 53 #define CLIENT_VERSION_BUILD 55
//! Set to true for release, false for prerelease or test build //! Set to true for release, false for prerelease or test build
#define CLIENT_VERSION_IS_RELEASE true #define CLIENT_VERSION_IS_RELEASE true

View File

@ -1571,6 +1571,9 @@ bool CDarksendPool::DoAutomaticDenominating(bool fDryRun)
} }
} }
// do not initiate queue if we are a liquidity proveder to avoid useless inter-mixing
if(nLiquidityProvider) return false;
int i = 0; int i = 0;
// otherwise, try one randomly // otherwise, try one randomly
@ -1625,12 +1628,21 @@ bool CDarksendPool::DoAutomaticDenominating(bool fDryRun)
bool CDarksendPool::PrepareDarksendDenominate() bool CDarksendPool::PrepareDarksendDenominate()
{ {
// Submit transaction to the pool if we get here, use sessionDenom so we use the same amount of money std::string strError = "";
std::string strError = pwalletMain->PrepareDarksendDenominate(0, nDarksendRounds); // Submit transaction to the pool if we get here
LogPrintf("DoAutomaticDenominating : Running Darksend denominate. Return '%s'\n", strError); // Try to use only inputs with the same number of rounds starting from lowest number of rounds possible
for(int i = 0; i < nDarksendRounds; i++) {
strError = pwalletMain->PrepareDarksendDenominate(i, i+1);
LogPrintf("DoAutomaticDenominating : Running Darksend denominate for %d rounds. Return '%s'\n", i, strError);
if(strError == "") return true;
}
// We failed? That's strange but let's just make final attempt and try to mix everything
strError = pwalletMain->PrepareDarksendDenominate(0, nDarksendRounds);
LogPrintf("DoAutomaticDenominating : Running Darksend denominate for all rounds. Return '%s'\n", strError);
if(strError == "") return true; if(strError == "") return true;
// Should never actually get here but just in case
strAutoDenomResult = strError; strAutoDenomResult = strError;
LogPrintf("DoAutomaticDenominating : Error running denominate, %s\n", strError); LogPrintf("DoAutomaticDenominating : Error running denominate, %s\n", strError);
return false; return false;

View File

@ -425,7 +425,7 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += "\n" + _("InstantX options:") + "\n"; strUsage += "\n" + _("InstantX options:") + "\n";
strUsage += " -enableinstantx=<n> " + strprintf(_("Enable instantx, show confirmations for locked transactions (bool, default: %s)"), "true") + "\n"; strUsage += " -enableinstantx=<n> " + strprintf(_("Enable instantx, show confirmations for locked transactions (bool, default: %s)"), "true") + "\n";
strUsage += " -instantxdepth=<n> " + strprintf(_("Show N confirmations for a successfully locked transaction (0-9999, default: %u)"), 1) + "\n"; strUsage += " -instantxdepth=<n> " + strprintf(_("Show N confirmations for a successfully locked transaction (0-9999, default: %u)"), nInstantXDepth) + "\n";
strUsage += "\n" + _("Node relay options:") + "\n"; strUsage += "\n" + _("Node relay options:") + "\n";
strUsage += " -datacarrier " + strprintf(_("Relay and mine data carrier transactions (default: %u)"), 1) + "\n"; strUsage += " -datacarrier " + strprintf(_("Relay and mine data carrier transactions (default: %u)"), 1) + "\n";
@ -698,6 +698,11 @@ bool AppInit2(boost::thread_group& threadGroup)
LogPrintf("AppInit2 : parameter interaction: -zapwallettxes=<mode> -> setting -rescan=1\n"); LogPrintf("AppInit2 : parameter interaction: -zapwallettxes=<mode> -> setting -rescan=1\n");
} }
if(!GetBoolArg("-enableinstantx", fEnableInstantX)){
if (SoftSetArg("-instantxdepth", 0))
LogPrintf("AppInit2 : parameter interaction: -enableinstantx=false -> setting -nInstantXDepth=0\n");
}
// Make sure enough file descriptors are available // Make sure enough file descriptors are available
int nBind = std::max((int)mapArgs.count("-bind") + (int)mapArgs.count("-whitebind"), 1); int nBind = std::max((int)mapArgs.count("-bind") + (int)mapArgs.count("-whitebind"), 1);
nMaxConnections = GetArg("-maxconnections", 125); nMaxConnections = GetArg("-maxconnections", 125);
@ -1532,14 +1537,9 @@ bool AppInit2(boost::thread_group& threadGroup)
if(nAnonymizeDarkcoinAmount > 999999) nAnonymizeDarkcoinAmount = 999999; if(nAnonymizeDarkcoinAmount > 999999) nAnonymizeDarkcoinAmount = 999999;
if(nAnonymizeDarkcoinAmount < 2) nAnonymizeDarkcoinAmount = 2; if(nAnonymizeDarkcoinAmount < 2) nAnonymizeDarkcoinAmount = 2;
bool fEnableInstantX = GetBoolArg("-enableinstantx", true); fEnableInstantX = GetBoolArg("-enableinstantx", fEnableInstantX);
if(fEnableInstantX){ nInstantXDepth = GetArg("-instantxdepth", nInstantXDepth);
nInstantXDepth = GetArg("-instantxdepth", 5); nInstantXDepth = std::min(std::max(nInstantXDepth, 0), 60);
if(nInstantXDepth > 60) nInstantXDepth = 60;
if(nInstantXDepth < 0) nAnonymizeDarkcoinAmount = 0;
} else {
nInstantXDepth = 0;
}
//lite mode disables all Masternode and Darksend related functionality //lite mode disables all Masternode and Darksend related functionality
fLiteMode = GetBoolArg("-litemode", false); fLiteMode = GetBoolArg("-litemode", false);

View File

@ -1487,10 +1487,9 @@ int CBudgetProposal::GetTotalPaymentCount()
int CBudgetProposal::GetRemainingPaymentCount() int CBudgetProposal::GetRemainingPaymentCount()
{ {
// If this budget starts in the future, this value will be wrong // If this budget starts in the future, this value will be wrong
int nPayments = (GetBlockEndCycle() - GetBlockCurrentCycle()) / GetBudgetPaymentCycleBlocks(); int nPayments = (GetBlockEndCycle() - GetBlockCurrentCycle()) / GetBudgetPaymentCycleBlocks() - 1;
int nTotal = (GetBlockEndCycle() - GetBlockStartCycle()) / GetBudgetPaymentCycleBlocks();
// Take the lowest value // Take the lowest value
return (nPayments <= nTotal ? nPayments : nTotal); return std::min(nPayments, GetTotalPaymentCount());
} }
CBudgetProposalBroadcast::CBudgetProposalBroadcast(std::string strProposalNameIn, std::string strURLIn, int nPaymentCount, CScript addressIn, CAmount nAmountIn, int nBlockStartIn, uint256 nFeeTXHashIn) CBudgetProposalBroadcast::CBudgetProposalBroadcast(std::string strProposalNameIn, std::string strURLIn, int nPaymentCount, CScript addressIn, CAmount nAmountIn, int nBlockStartIn, uint256 nFeeTXHashIn)

View File

@ -7,10 +7,11 @@
<file alias="fi">locale/dash_fi.qm</file> <file alias="fi">locale/dash_fi.qm</file>
<file alias="fr">locale/dash_fr.qm</file> <file alias="fr">locale/dash_fr.qm</file>
<file alias="it">locale/dash_it.qm</file> <file alias="it">locale/dash_it.qm</file>
<file alias="it">locale/dash_ja.qm</file>
<file alias="pl">locale/dash_pl.qm</file> <file alias="pl">locale/dash_pl.qm</file>
<file alias="pt">locale/dash_pt.qm</file> <file alias="pt">locale/dash_pt.qm</file>
<file alias="ru">locale/dash_ru.qm</file> <file alias="ru">locale/dash_ru.qm</file>
<file alias="sv">locale/dash_sk.qm</file> <file alias="sk">locale/dash_sk.qm</file>
<file alias="sv">locale/dash_sv.qm</file> <file alias="sv">locale/dash_sv.qm</file>
<file alias="vi">locale/dash_vi.qm</file> <file alias="vi">locale/dash_vi.qm</file>
<file alias="zh_CN">locale/dash_zh_CN.qm</file> <file alias="zh_CN">locale/dash_zh_CN.qm</file>

View File

@ -4391,6 +4391,10 @@ Pour exemple: alertnotify=echo %%s | mail -s "Alerte Dash" admin@foo.com
<source>Specify your own public address</source> <source>Specify your own public address</source>
<translation>Spécifier votre propre adresse publique</translation> <translation>Spécifier votre propre adresse publique</translation>
</message> </message>
<message>
<source>Synchronization pending...</source>
<translation>Synchronisation en suspens...</translation>
</message>
<message> <message>
<source>This help message</source> <source>This help message</source>
<translation>Ce message d'aide</translation> <translation>Ce message d'aide</translation>

3135
src/qt/locale/dash_ja.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -740,6 +740,10 @@ Kiểu: %3
<source>Copy change</source> <source>Copy change</source>
<translation>Sao chép tiền trả lại</translation> <translation>Sao chép tiền trả lại</translation>
</message> </message>
<message>
<source>Non-anonymized input selected. &lt;b&gt;Darksend will be disabled.&lt;/b&gt;&lt;br&gt;&lt;br&gt;If you still want to use Darksend, please deselect all non-nonymized inputs first and then check Darksend checkbox again.</source>
<translation>Đu vào không n danh đưc chọn. &lt;b&gt;Darksend sẽ bị tắt.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Nếu bn vn mun s dng Darksend, hãy b chn tata c các đu vào không n danh trưc và đánh du vào hp Darksend ln na.</translation>
</message>
<message> <message>
<source>highest</source> <source>highest</source>
<translation>cao nhất</translation> <translation>cao nhất</translation>
@ -1157,6 +1161,10 @@ Kiểu: %3
<source>W&amp;allet</source> <source>W&amp;allet</source>
<translation>&amp;</translation> <translation>&amp;</translation>
</message> </message>
<message>
<source>If you disable the spending of unconfirmed change, the change from a transaction&lt;br/&gt;cannot be used until that transaction has at least one confirmation.&lt;br/&gt;This also affects how your balance is computed.</source>
<translation>Nếu bạn hiệu hóa các chi tiêu của phần tiền lẻ chưa đưc xác nhận, phần tiền lẻ từ một giao dịch &lt;br/&gt;không thể đưc sử dụng đến khi giao dịch đó nhận đưc ít nhất một xác nhận. &lt;br/&gt;Điều này nh hưởng đến cách tính số của bạn.</translation>
</message>
<message> <message>
<source>Accept connections from outside</source> <source>Accept connections from outside</source>
<translation>Chấp nhận kết nối từ bên ngoài</translation> <translation>Chấp nhận kết nối từ bên ngoài</translation>
@ -1494,6 +1502,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>%n Rounds</source> <source>%n Rounds</source>
<translation><numerusform>%n Vòng</numerusform></translation> <translation><numerusform>%n Vòng</numerusform></translation>
</message> </message>
<message>
<source>Not enough compatible inputs to anonymize &lt;span style='color:red;'&gt;%1&lt;/span&gt;,&lt;br&gt;will anonymize &lt;span style='color:red;'&gt;%2&lt;/span&gt; instead</source>
<translation>Không đ đu vào tương ng đ n danh &lt;span style='color:red;'&gt;%1&lt;/span&gt;,&lt;br&gt;s n danh &lt;span style='color:red;'&gt;%2&lt;/span&gt; thay vào đó</translation>
</message>
<message> <message>
<source>Overall progress</source> <source>Overall progress</source>
<translation>Tiến trình chung</translation> <translation>Tiến trình chung</translation>
@ -1915,6 +1927,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Upgrade wallet format</source> <source>Upgrade wallet format</source>
<translation>Nâng cấp đnh dạng </translation> <translation>Nâng cấp đnh dạng </translation>
</message> </message>
<message>
<source>The buttons below will restart the wallet with command-line options to repair the wallet, fix issues with corrupt blockhain files or missing/obsolete transactions.</source>
<translation>Nút dưới đây sẽ khởi đng lại với tuỳ chọn dòng lệnh đ sửa lại , sửa lại những vấn đ với các tệp blockchain bị lỗi hoặc các giao dịch bị thiếu/.</translation>
</message>
<message> <message>
<source>-salvagewallet: Attempt to recover private keys from a corrupt wallet.dat.</source> <source>-salvagewallet: Attempt to recover private keys from a corrupt wallet.dat.</source>
<translation>-salvagewallet: Thử phục hồi khoá riêng từ tệp wallet.dat bị lỗi.</translation> <translation>-salvagewallet: Thử phục hồi khoá riêng từ tệp wallet.dat bị lỗi.</translation>
@ -2267,6 +2283,18 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Minimize</source> <source>Minimize</source>
<translation>Tối thiểu hoá</translation> <translation>Tối thiểu hoá</translation>
</message> </message>
<message>
<source>If the custom fee is set to 1000 duffs and the transaction is only 250 bytes, then "per kilobyte" only pays 250 duffs in fee,&lt;br /&gt;while "at least" pays 1000 duffs. For transactions bigger than a kilobyte both pay by kilobyte.</source>
<translation>Nếu mức phí tuỳ chỉnh đưc đt 1000 duff giao dịch chỉ 250 byte, thì "theo kilobyte" chỉ trả 250 duff cho phí,&lt;br /&gt;trong khi "ít nhất" phải trả 1000 duff. Cho các giao dịch lớn hơn 1 kilobyte thì cả hai đu trả theo kilobyte.</translation>
</message>
<message>
<source>If the custom fee is set to 1000 duffs and the transaction is only 250 bytes, then "per kilobyte" only pays 250 duffs in fee,&lt;br /&gt;while "total at least" pays 1000 duffs. For transactions bigger than a kilobyte both pay by kilobyte.</source>
<translation>Nếu phí giao dịch tuỳ chỉnh đưc đt 1000 duff giao dịch chỉ 250 bytes, thì "theo kilobyte" chỉ trả 250 duff phí,&lt;br /&gt;trong khi "tổng ít nhất" trả 1000 duff. Với các giao dịch lớn hơn 1 kilobyte thì cả hai đu trả theo kilobyte.</translation>
</message>
<message>
<source>Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks.&lt;br /&gt;But be aware that this can end up in a never confirming transaction once there is more demand for dash transactions than the network can process.</source>
<translation>Chỉ trả phí tối thiểu cũng đưc chỉ khi lượng giao dịch ít hơn không gian trong khối.&lt;br /&gt;Nhưng cần lưu ý thể xảy ra hiện tượng giao dịch không bao giờ đưc xác nhận một khi nhiều nhu cầu giao dash hơn khả năng mạng lưới thể xử đưc.</translation>
</message>
<message> <message>
<source>per kilobyte</source> <source>per kilobyte</source>
<translation>mỗi kilobyte</translation> <translation>mỗi kilobyte</translation>
@ -2287,6 +2315,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Custom:</source> <source>Custom:</source>
<translation>Tuỳ chỉnh:</translation> <translation>Tuỳ chỉnh:</translation>
</message> </message>
<message>
<source>(Smart fee not initialized yet. This usually takes a few blocks...)</source>
<translation>(Phí khởi tạo thông minh chưa đưc khởi tạo. Thường thì sẽ mất vài block...)</translation>
</message>
<message> <message>
<source>Confirmation time:</source> <source>Confirmation time:</source>
<translation>Thời gian xác thực:</translation> <translation>Thời gian xác thực:</translation>
@ -3043,6 +3075,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Type of transaction.</source> <source>Type of transaction.</source>
<translation>Kiểu giao dịch.</translation> <translation>Kiểu giao dịch.</translation>
</message> </message>
<message>
<source>Whether or not a watch-only address is involved in this transaction.</source>
<translation>Cho hay không thì một đa chỉ chỉ theo dõi cũng liên quan đến giao dịch này.</translation>
</message>
<message> <message>
<source>Destination address of transaction.</source> <source>Destination address of transaction.</source>
<translation>Đa chỉ đích của giao dịch.</translation> <translation>Đa chỉ đích của giao dịch.</translation>
@ -3541,10 +3577,30 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>If &lt;category&gt; is not supplied, output all debugging information.</source> <source>If &lt;category&gt; is not supplied, output all debugging information.</source>
<translation>Nếu &lt;category&gt; không đưc cung cấp, đưa ra tất cả các thông tin gỡ rối.</translation> <translation>Nếu &lt;category&gt; không đưc cung cấp, đưa ra tất cả các thông tin gỡ rối.</translation>
</message> </message>
<message>
<source>(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)</source>
<translation>(1 = giữ lại dữ liệu tx, dụ chủ tài khoản thông tin yêu cầu thanh toán, 2 = bỏ dữ liệu tx)</translation>
</message>
<message>
<source>Allow JSON-RPC connections from specified source. Valid for &lt;ip&gt; are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times</source>
<translation>Cho phép các kết nối JSON-RPC từ các nguồn nhất đnh. Các đa chỉ &lt;ip&gt; hợp lệ các đa chỉ IP đơn ( dụ: 1.2.3.4), một mạng/netmask ( dụ: 1.2.3.4/255.255.255.0) hoặc một mạng/CIDR ( dụ: 1.2.3.4/24). Tuỳ chọn này thể chỉ ra nhiều lần.</translation>
</message>
<message> <message>
<source>An error occurred while setting up the RPC address %s port %u for listening: %s</source> <source>An error occurred while setting up the RPC address %s port %u for listening: %s</source>
<translation> một lỗi xảy ra trong khi thiết lập đa chỉ RPC %s cổng %u đ lắng nghe: %s</translation> <translation> một lỗi xảy ra trong khi thiết lập đa chỉ RPC %s cổng %u đ lắng nghe: %s</translation>
</message> </message>
<message>
<source>Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6</source>
<translation>Liên kết với đa chỉ cụ thể đưa vào danh sách chấp nhận của các đi tác kết nối vào . Sử dụng cách viết [đa chỉ máy]:cổng cho IPv6</translation>
</message>
<message>
<source>Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces)</source>
<translation>Liên kết với đa chỉ cụ thể đ lắng nghe các kết nối JSON-RPC. Sử dụng cách viết [đa chỉ máy]:cổng cho IPv6. Tùy chọn này thể đưc chỉ đnh nhiều lần (ngầm định: bind cho tất cả các giao diện)</translation>
</message>
<message>
<source>Change automatic finalized budget voting behavior. mode=auto: Vote for only exact finalized budget match to my generated budget. (string, default: auto)</source>
<translation>Thay đi hành vi bỏ phiếu ngân sách cuối cùng tự đng. mode = auto: Chỉ bỏ phiếu cho ngân sách cuối cùng tương ng chính xác với ngân sách đưc cấp phát của tôi. (string, ngầm định: auto)</translation>
</message>
<message> <message>
<source>Continuously rate-limit free transactions to &lt;n&gt;*1000 bytes per minute (default:%u)</source> <source>Continuously rate-limit free transactions to &lt;n&gt;*1000 bytes per minute (default:%u)</source>
<translation>Liên tục giới hạn tỷ lệ miễn phí giao dịch về &lt;n&gt;*1000 byte cho mỗi phút (ngầm đnh:%u)</translation> <translation>Liên tục giới hạn tỷ lệ miễn phí giao dịch về &lt;n&gt;*1000 byte cho mỗi phút (ngầm đnh:%u)</translation>
@ -3573,6 +3629,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Enable use of automated darksend for funds stored in this wallet (0-1, default: %u)</source> <source>Enable use of automated darksend for funds stored in this wallet (0-1, default: %u)</source>
<translation>Cho phép sử dụng tự đng darksend cho những ngân sách đưc lưu trong (0-1, ngầm đnh: %u)</translation> <translation>Cho phép sử dụng tự đng darksend cho những ngân sách đưc lưu trong (0-1, ngầm đnh: %u)</translation>
</message> </message>
<message>
<source>Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported.</source>
<translation>Lỗi: Thấy tham số không đưc hỗ trợ -socks. Thiết lập phiên bản SOCKS không thể đưc nữa, chỉ hỗ trợ proxy SOCKS5.</translation>
</message>
<message> <message>
<source>Fees (in DASH/Kb) smaller than this are considered zero fee for relaying (default: %s)</source> <source>Fees (in DASH/Kb) smaller than this are considered zero fee for relaying (default: %s)</source>
<translation>Phí (tính theo DASH/Kb) nhỏ hơn số này đưc coi không mất phí cho việc chuyển tiền (ngầm đnh: %s)</translation> <translation>Phí (tính theo DASH/Kb) nhỏ hơn số này đưc coi không mất phí cho việc chuyển tiền (ngầm đnh: %s)</translation>
@ -3593,10 +3653,30 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>How thorough the block verification of -checkblocks is (0-4, default: %u)</source> <source>How thorough the block verification of -checkblocks is (0-4, default: %u)</source>
<translation>Cách kiểm tra khối triệt đ -checkblocks (0-4, ngầm đnh: %u)</translation> <translation>Cách kiểm tra khối triệt đ -checkblocks (0-4, ngầm đnh: %u)</translation>
</message> </message>
<message>
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
<translation>Nếu paytxfee không đưc thiết lập, bao gồm đy đ phí đ giao dịch bắt đu xác nhận bình quân trong n khối (ngầm đnh: %u)</translation>
</message>
<message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>Số lượng không phù hợp cho -maxtxfee=&lt;số lượng&gt;: '%s' (phải bằng ít nhất mức phí chuyển tiếp tối thiểu %s đ tránh tình trạng tắc các giao dịch)</translation>
</message>
<message> <message>
<source>Log transaction priority and fee per kB when mining blocks (default: %u)</source> <source>Log transaction priority and fee per kB when mining blocks (default: %u)</source>
<translation>Lưu nhật các ưu tiên phí giao dịch cho mỗi kB khi đào các khối (ngầm đnh: %u)</translation> <translation>Lưu nhật các ưu tiên phí giao dịch cho mỗi kB khi đào các khối (ngầm đnh: %u)</translation>
</message> </message>
<message>
<source>Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u)</source>
<translation>Duy trì một chỉ mục giao dịch đy đ, sử dụng bởi lệnh gọi rpc getrawtransaction (ngầm đnh: %u)</translation>
</message>
<message>
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
<translation>Kích thước tối đa của dữ liệu trong các giao dịch cung cấp dữ liệu, chúng tôi chuyển tiếp đào (ngầm đnh: %u)</translation>
</message>
<message>
<source>Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)</source>
<translation>Tổng số tối đa phí đ sử dụng cho một giao dịch trên , đt số này quá nhỏ thể làm bỏ lỡ các giao dịch lớn (ngầm đnh: %s)</translation>
</message>
<message> <message>
<source>Number of seconds to keep misbehaving peers from reconnecting (default: %u)</source> <source>Number of seconds to keep misbehaving peers from reconnecting (default: %u)</source>
<translation>Số giây hạn chế đ không cho phép các đi tác ngang hàng xử không đúng tiếp tục kết nối lại (ngầm đnh: %u)</translation> <translation>Số giây hạn chế đ không cho phép các đi tác ngang hàng xử không đúng tiếp tục kết nối lại (ngầm đnh: %u)</translation>
@ -3609,6 +3689,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Provide liquidity to Darksend by infrequently mixing coins on a continual basis (0-100, default: %u, 1=very frequent, high fees, 100=very infrequent, low fees)</source> <source>Provide liquidity to Darksend by infrequently mixing coins on a continual basis (0-100, default: %u, 1=very frequent, high fees, 100=very infrequent, low fees)</source>
<translation>Cung cấp thanh khoản cho Darksend bằng việc thường xuyên trộn tiền một cách liên tục (0-100, ngầm đnh: %u, 1=rất thường xuyên, phí cao, 100=rất ít thường xuyên, phí thấp)</translation> <translation>Cung cấp thanh khoản cho Darksend bằng việc thường xuyên trộn tiền một cách liên tục (0-100, ngầm đnh: %u, 1=rất thường xuyên, phí cao, 100=rất ít thường xuyên, phí thấp)</translation>
</message> </message>
<message>
<source>Require high priority for relaying free or low-fee transactions (default:%u)</source>
<translation>Yêu cầu ưu tiên cao cho việc chuyển tiếp các giao dịch miễn phí hoặc giao dịch phí thấp (ngầm đnh: %u)</translation>
</message>
<message> <message>
<source>Send trace/debug info to console instead of debug.log file (default: %u)</source> <source>Send trace/debug info to console instead of debug.log file (default: %u)</source>
<translation>Gửi thông tin trace/debug đến console thay ra tệp debug.log (ngầm đnh: %u)</translation> <translation>Gửi thông tin trace/debug đến console thay ra tệp debug.log (ngầm đnh: %u)</translation>
@ -3625,6 +3709,30 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit &lt;https://www.openssl.org/&gt; and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source> <source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit &lt;https://www.openssl.org/&gt; and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
<translation>Sản phẩm này kèm theo phần mềm đưc phát triển bởi dự án OpenSSL đ sử dụng các công cụ OpenSSL &lt;https://www.openssl.org/&gt; và phần mềm mã hoá được viết bởi Eric Young và phần mềm UPnP được viết bởi Thomas Bernard.</translation> <translation>Sản phẩm này kèm theo phần mềm đưc phát triển bởi dự án OpenSSL đ sử dụng các công cụ OpenSSL &lt;https://www.openssl.org/&gt; và phần mềm mã hoá được viết bởi Eric Young và phần mềm UPnP được viết bởi Thomas Bernard.</translation>
</message> </message>
<message>
<source>To use dashd, or the -server option to dash-qt, you must set an rpcpassword in the configuration file:
%s
It is recommended you use the following random password:
rpcuser=dashrpc
rpcpassword=%s
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %%s | mail -s "Dash Alert" admin@foo.com
</source>
<translation>Đ sử dụng dashd, hoặc tuỳ chọn -server với dash-qt, bạn phải đt một mật khẩu rpcpassword trong tệp cấu hình:
%s
Gợi ý rằng bạn nên sử dụng những mật khẩu ngẫu nhiên sau:
rpcuser=dashrpc
rpcpassword=%s
(bạn không cần thiết phải nhớ mật khẩu này)
Username mật khẩu KHÔNG ĐƯC giống nhau.
Nếu tệp chưa , thì hãy tạo ra với quyền chỉ đc.
Gợi ý bạn rằng cần đt alertnotify đ bạn nhận đưc thông báo về các vấn đ;
dụ: alertnotify=echo %%s | mail -s "Dash Alert" admin@foo.com
</translation>
</message>
<message> <message>
<source>Unable to locate enough funds for this transaction that are not equal 1000 DASH.</source> <source>Unable to locate enough funds for this transaction that are not equal 1000 DASH.</source>
<translation>Không tìm đưc đ ngân sách cho giao dịch không đ 1000 DASH.</translation> <translation>Không tìm đưc đ ngân sách cho giao dịch không đ 1000 DASH.</translation>
@ -3645,6 +3753,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times.</source> <source>Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times.</source>
<translation>Các đi tác ngang hàng cho phép đang kết nối từ đa chỉ IP netmask. thể đưc chỉ nhiều lần.</translation> <translation>Các đi tác ngang hàng cho phép đang kết nối từ đa chỉ IP netmask. thể đưc chỉ nhiều lần.</translation>
</message> </message>
<message>
<source>Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway</source>
<translation>Cái điểm ngang hàng trong danh sách trắng không thể bị cấm DoS các giao dịch của luôn đưc chuyển tiếp, thậm chí cả khi đã trong mempool, hữu ích dụ như cho một cửa ngõ</translation>
</message>
<message> <message>
<source>(9999 could be used only on mainnet)</source> <source>(9999 could be used only on mainnet)</source>
<translation>(9999 chỉ đưc sử dụng trên mạng chính thức)</translation> <translation>(9999 chỉ đưc sử dụng trên mạng chính thức)</translation>
@ -3690,6 +3802,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Copyright (C) 2014-%i The Dash Core Developers</source> <source>Copyright (C) 2014-%i The Dash Core Developers</source>
<translation>Bản quyền (C) 2014-%i bởi Nhóm phát triển Dash Core</translation> <translation>Bản quyền (C) 2014-%i bởi Nhóm phát triển Dash Core</translation>
</message> </message>
<message>
<source>Could not parse -rpcbind value %s as network address</source>
<translation>Không thể phân tích giá trị -rpcbind %s như đa chỉ mạng</translation>
</message>
<message> <message>
<source>Darksend is idle.</source> <source>Darksend is idle.</source>
<translation>Darksend đang nghỉ.</translation> <translation>Darksend đang nghỉ.</translation>
@ -3722,6 +3838,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Error: A fatal internal error occured, see debug.log for details</source> <source>Error: A fatal internal error occured, see debug.log for details</source>
<translation>Lỗi: Một lỗi nghiêm trọng đã xuất hiện, xem debug.log đ biết thêm chi tiết</translation> <translation>Lỗi: Một lỗi nghiêm trọng đã xuất hiện, xem debug.log đ biết thêm chi tiết</translation>
</message> </message>
<message>
<source>Error: Can't select current denominated inputs</source>
<translation>Lỗi: Không thể chọn đu vào gốc hiện tại</translation>
</message>
<message> <message>
<source>Error: Unsupported argument -tor found, use -onion.</source> <source>Error: Unsupported argument -tor found, use -onion.</source>
<translation>Lỗi: Tìm thấy tham số không đưc hỗ trợ -tor, thay vào đó hãy sử dụng -onion</translation> <translation>Lỗi: Tìm thấy tham số không đưc hỗ trợ -tor, thay vào đó hãy sử dụng -onion</translation>
@ -3878,6 +3998,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Mixing in progress...</source> <source>Mixing in progress...</source>
<translation>Đang trong quá trình trộn...</translation> <translation>Đang trong quá trình trộn...</translation>
</message> </message>
<message>
<source>Need to specify a port with -whitebind: '%s'</source>
<translation>Cần chỉ một cổng với -whitebind: '%s'</translation>
</message>
<message> <message>
<source>No Masternodes detected.</source> <source>No Masternodes detected.</source>
<translation>Không tìm thấy các Master node.</translation> <translation>Không tìm thấy các Master node.</translation>
@ -3910,6 +4034,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Run a thread to flush wallet periodically (default: %u)</source> <source>Run a thread to flush wallet periodically (default: %u)</source>
<translation>Chạy một luồng đ làm sạch một cách thường xuyên (ngầm đnh: %u)</translation> <translation>Chạy một luồng đ làm sạch một cách thường xuyên (ngầm đnh: %u)</translation>
</message> </message>
<message>
<source>Send trace/debug info to debug.log file (default: %u)</source>
<translation>Gửi thông tin trace/debug vào file debug.log (ngầm đnh: %u)</translation>
</message>
<message> <message>
<source>Send transactions as zero-fee transactions if possible (default: %u)</source> <source>Send transactions as zero-fee transactions if possible (default: %u)</source>
<translation>Gửi giao dịch như giao dịch không phí nếu thể (ngầm đnh: %u)</translation> <translation>Gửi giao dịch như giao dịch không phí nếu thể (ngầm đnh: %u)</translation>
@ -4174,6 +4302,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>RPC server options:</source> <source>RPC server options:</source>
<translation>Tuỳ chọn cho RPC server</translation> <translation>Tuỳ chọn cho RPC server</translation>
</message> </message>
<message>
<source>RPC support for HTTP persistent connections (default: %d)</source>
<translation>RPC hỗ trợ cho các kết nối HTTP cố đnh (ngầm đnh: %d)</translation>
</message>
<message> <message>
<source>Randomly drop 1 of every &lt;n&gt; network messages</source> <source>Randomly drop 1 of every &lt;n&gt; network messages</source>
<translation>Bỏ ngẫu nhiên 1 mỗi &lt;n&gt; thông điệp mạng</translation> <translation>Bỏ ngẫu nhiên 1 mỗi &lt;n&gt; thông điệp mạng</translation>
@ -4186,6 +4318,18 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Rebuild block chain index from current blk000??.dat files</source> <source>Rebuild block chain index from current blk000??.dat files</source>
<translation>Tái tạo lại chỉ mục chuỗi khối từ tệp blk000??.dat</translation> <translation>Tái tạo lại chỉ mục chuỗi khối từ tệp blk000??.dat</translation>
</message> </message>
<message>
<source>Receive and display P2P network alerts (default: %u)</source>
<translation>Nhận hiển thị các cảnh báo mạng P2P (ngầm đnh: %u)</translation>
</message>
<message>
<source>Relay and mine data carrier transactions (default: %u)</source>
<translation>Chuyển tiếp đào các giao dịch mang dữ liệu (ngầm đnh: %u)</translation>
</message>
<message>
<source>Relay non-P2SH multisig (default: %u)</source>
<translation>Chuyển tiếp các khoá đa chữ không phải P2SH (ngầm đnh: %u)</translation>
</message>
<message> <message>
<source>Rescan the block chain for missing wallet transactions</source> <source>Rescan the block chain for missing wallet transactions</source>
<translation>Quét lại chuỗi khối cho các giao dịch bị thiếu.</translation> <translation>Quét lại chuỗi khối cho các giao dịch bị thiếu.</translation>
@ -4246,6 +4390,10 @@ https://www.transifex.com/projects/p/dash/</translation>
<source>Specify your own public address</source> <source>Specify your own public address</source>
<translation>Hãy xác đnh đa chỉ công khai của bạn</translation> <translation>Hãy xác đnh đa chỉ công khai của bạn</translation>
</message> </message>
<message>
<source>Synchronization pending...</source>
<translation>Đang chuẩn bị đng bộ...</translation>
</message>
<message> <message>
<source>This help message</source> <source>This help message</source>
<translation>Đây thông điệp trợ giúp</translation> <translation>Đây thông điệp trợ giúp</translation>

File diff suppressed because it is too large Load Diff

View File

@ -297,6 +297,12 @@ WalletModel::SendCoinsReturn WalletModel::prepareTransaction(WalletModelTransact
bool fCreated = wallet->CreateTransaction(vecSend, *newTx, *keyChange, nFeeRequired, strFailReason, coinControl, recipients[0].inputType, recipients[0].useInstantX); bool fCreated = wallet->CreateTransaction(vecSend, *newTx, *keyChange, nFeeRequired, strFailReason, coinControl, recipients[0].inputType, recipients[0].useInstantX);
transaction.setTransactionFee(nFeeRequired); transaction.setTransactionFee(nFeeRequired);
if(recipients[0].useInstantX && newTx->GetValueOut() > GetSporkValue(SPORK_5_MAX_VALUE)*COIN){
emit message(tr("Send Coins"), tr("InstantX doesn't support sending values that high yet. Transactions are currently limited to %1 DASH.").arg(GetSporkValue(SPORK_5_MAX_VALUE)),
CClientUIInterface::MSG_ERROR);
return TransactionCreationFailed;
}
if(!fCreated) if(!fCreated)
{ {
if((total + nFeeRequired) > nBalance) if((total + nFeeRequired) > nBalance)

View File

@ -97,6 +97,8 @@ static const CRPCConvertParam vRPCConvertParams[] =
{ "mnbudget", 4 }, { "mnbudget", 4 },
{ "mnbudget", 6 }, { "mnbudget", 6 },
{ "mnbudget", 8 }, { "mnbudget", 8 },
{ "mnbudgetvoteraw", 1 },
{ "mnbudgetvoteraw", 4 },
}; };
class CRPCConvertTable class CRPCConvertTable

View File

@ -505,6 +505,58 @@ Value mnbudget(const Array& params, bool fHelp)
return Value::null; return Value::null;
} }
Value mnbudgetvoteraw(const Array& params, bool fHelp)
{
if (fHelp || params.size() != 6)
throw runtime_error(
"mnbudgetvoteraw <masternode-tx-hash> <masternode-tx-index> <proposal-hash> <yes|no> <time> <vote-sig>\n"
"Compile and relay a proposal vote with provided external signature instead of signing vote internally\n"
);
uint256 hashMnTx = ParseHashV(params[0], "mn tx hash");
int nMnTxIndex = params[1].get_int();
CTxIn vin = CTxIn(hashMnTx, nMnTxIndex);
uint256 hashProposal = ParseHashV(params[2], "Proposal hash");
std::string strVote = params[3].get_str();
if(strVote != "yes" && strVote != "no") return "You can only vote 'yes' or 'no'";
int nVote = VOTE_ABSTAIN;
if(strVote == "yes") nVote = VOTE_YES;
if(strVote == "no") nVote = VOTE_NO;
int64_t nTime = params[4].get_int64();
std::string strSig = params[5].get_str();
bool fInvalid = false;
vector<unsigned char> vchSig = DecodeBase64(strSig.c_str(), &fInvalid);
if (fInvalid)
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Malformed base64 encoding");
CMasternode* pmn = mnodeman.Find(vin);
if(pmn == NULL)
{
return "Failure to find masternode in list : " + vin.ToString();
}
CBudgetVote vote(vin, hashProposal, nVote);
vote.nTime = nTime;
vote.vchSig = vchSig;
if(!vote.SignatureValid(true)){
return "Failure to verify signature.";
}
std::string strError = "";
if(budget.UpdateProposal(vote, NULL, strError)){
budget.mapSeenMasternodeBudgetVotes.insert(make_pair(vote.GetHash(), vote));
vote.Relay();
return "Voted successfully";
} else {
return "Error voting : " + strError;
}
}
Value mnfinalbudget(const Array& params, bool fHelp) Value mnfinalbudget(const Array& params, bool fHelp)
{ {
string strCommand; string strCommand;

View File

@ -309,14 +309,15 @@ static const CRPCCommand vRPCCommands[] =
{ "hidden", "setmocktime", &setmocktime, true, false, false }, { "hidden", "setmocktime", &setmocktime, true, false, false },
/* Dash features */ /* Dash features */
{ "dash", "mnsync", &mnsync, true, false, false }, { "dash", "masternode", &masternode, true, true, false },
{ "dash", "spork", &spork, true, false, false }, { "dash", "masternodelist", &masternodelist, true, true, false },
{ "dash", "masternode", &masternode, true, false, true }, { "dash", "mnbudget", &mnbudget, true, true, false },
{ "dash", "mnbudget", &mnbudget, true, false, false }, { "dash", "mnbudgetvoteraw", &mnbudgetvoteraw, true, true, false },
{ "dash", "mnfinalbudget", &mnfinalbudget, true, false, false }, { "dash", "mnfinalbudget", &mnfinalbudget, true, true, false },
{ "dash", "masternodelist", &masternodelist, true, false, false }, { "dash", "mnsync", &mnsync, true, true, false },
{ "dash", "spork", &spork, true, true, false },
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
{ "dash", "darksend", &darksend, false, false, true }, { "dash", "darksend", &darksend, false, false, true }, /* not threadSafe because of SendMoney */
/* Wallet */ /* Wallet */
{ "wallet", "addmultisigaddress", &addmultisigaddress, true, false, true }, { "wallet", "addmultisigaddress", &addmultisigaddress, true, false, true },

View File

@ -232,6 +232,7 @@ extern json_spirit::Value spork(const json_spirit::Array& params, bool fHelp);
extern json_spirit::Value masternode(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value masternode(const json_spirit::Array& params, bool fHelp);
extern json_spirit::Value masternodelist(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value masternodelist(const json_spirit::Array& params, bool fHelp);
extern json_spirit::Value mnbudget(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value mnbudget(const json_spirit::Array& params, bool fHelp);
extern json_spirit::Value mnbudgetvoteraw(const json_spirit::Array& params, bool fHelp);
extern json_spirit::Value mnfinalbudget(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value mnfinalbudget(const json_spirit::Array& params, bool fHelp);
extern json_spirit::Value mnsync(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value mnsync(const json_spirit::Array& params, bool fHelp);

View File

@ -48,7 +48,9 @@ void EnsureWalletIsUnlocked()
void WalletTxToJSON(const CWalletTx& wtx, Object& entry) void WalletTxToJSON(const CWalletTx& wtx, Object& entry)
{ {
int confirms = wtx.GetDepthInMainChain(false); int confirms = wtx.GetDepthInMainChain(false);
entry.push_back(Pair("confirmations", confirms)); int confirmsTotal = GetIXConfirmations(wtx.GetHash()) + confirms;
entry.push_back(Pair("confirmations", confirmsTotal));
entry.push_back(Pair("bcconfirmations", confirms));
if (wtx.IsCoinBase()) if (wtx.IsCoinBase())
entry.push_back(Pair("generated", true)); entry.push_back(Pair("generated", true));
if (confirms > 0) if (confirms > 0)
@ -1006,12 +1008,14 @@ struct tallyitem
{ {
CAmount nAmount; CAmount nAmount;
int nConf; int nConf;
int nBCConf;
vector<uint256> txids; vector<uint256> txids;
bool fIsWatchonly; bool fIsWatchonly;
tallyitem() tallyitem()
{ {
nAmount = 0; nAmount = 0;
nConf = std::numeric_limits<int>::max(); nConf = std::numeric_limits<int>::max();
nBCConf = std::numeric_limits<int>::max();
fIsWatchonly = false; fIsWatchonly = false;
} }
}; };
@ -1043,6 +1047,7 @@ Value ListReceived(const Array& params, bool fByAccounts)
continue; continue;
int nDepth = wtx.GetDepthInMainChain(); int nDepth = wtx.GetDepthInMainChain();
int nBCDepth = wtx.GetDepthInMainChain(false);
if (nDepth < nMinDepth) if (nDepth < nMinDepth)
continue; continue;
@ -1059,6 +1064,7 @@ Value ListReceived(const Array& params, bool fByAccounts)
tallyitem& item = mapTally[address]; tallyitem& item = mapTally[address];
item.nAmount += txout.nValue; item.nAmount += txout.nValue;
item.nConf = min(item.nConf, nDepth); item.nConf = min(item.nConf, nDepth);
item.nBCConf = min(item.nBCConf, nBCDepth);
item.txids.push_back(wtx.GetHash()); item.txids.push_back(wtx.GetHash());
if (mine & ISMINE_WATCH_ONLY) if (mine & ISMINE_WATCH_ONLY)
item.fIsWatchonly = true; item.fIsWatchonly = true;
@ -1078,11 +1084,13 @@ Value ListReceived(const Array& params, bool fByAccounts)
CAmount nAmount = 0; CAmount nAmount = 0;
int nConf = std::numeric_limits<int>::max(); int nConf = std::numeric_limits<int>::max();
int nBCConf = std::numeric_limits<int>::max();
bool fIsWatchonly = false; bool fIsWatchonly = false;
if (it != mapTally.end()) if (it != mapTally.end())
{ {
nAmount = (*it).second.nAmount; nAmount = (*it).second.nAmount;
nConf = (*it).second.nConf; nConf = (*it).second.nConf;
nBCConf = (*it).second.nBCConf;
fIsWatchonly = (*it).second.fIsWatchonly; fIsWatchonly = (*it).second.fIsWatchonly;
} }
@ -1091,6 +1099,7 @@ Value ListReceived(const Array& params, bool fByAccounts)
tallyitem& item = mapAccountTally[strAccount]; tallyitem& item = mapAccountTally[strAccount];
item.nAmount += nAmount; item.nAmount += nAmount;
item.nConf = min(item.nConf, nConf); item.nConf = min(item.nConf, nConf);
item.nBCConf = min(item.nBCConf, nBCConf);
item.fIsWatchonly = fIsWatchonly; item.fIsWatchonly = fIsWatchonly;
} }
else else
@ -1102,6 +1111,7 @@ Value ListReceived(const Array& params, bool fByAccounts)
obj.push_back(Pair("account", strAccount)); obj.push_back(Pair("account", strAccount));
obj.push_back(Pair("amount", ValueFromAmount(nAmount))); obj.push_back(Pair("amount", ValueFromAmount(nAmount)));
obj.push_back(Pair("confirmations", (nConf == std::numeric_limits<int>::max() ? 0 : nConf))); obj.push_back(Pair("confirmations", (nConf == std::numeric_limits<int>::max() ? 0 : nConf)));
obj.push_back(Pair("bcconfirmations", (nBCConf == std::numeric_limits<int>::max() ? 0 : nBCConf)));
Array transactions; Array transactions;
if (it != mapTally.end()) if (it != mapTally.end())
{ {
@ -1121,12 +1131,14 @@ Value ListReceived(const Array& params, bool fByAccounts)
{ {
CAmount nAmount = (*it).second.nAmount; CAmount nAmount = (*it).second.nAmount;
int nConf = (*it).second.nConf; int nConf = (*it).second.nConf;
int nBCConf = (*it).second.nBCConf;
Object obj; Object obj;
if((*it).second.fIsWatchonly) if((*it).second.fIsWatchonly)
obj.push_back(Pair("involvesWatchonly", true)); obj.push_back(Pair("involvesWatchonly", true));
obj.push_back(Pair("account", (*it).first)); obj.push_back(Pair("account", (*it).first));
obj.push_back(Pair("amount", ValueFromAmount(nAmount))); obj.push_back(Pair("amount", ValueFromAmount(nAmount)));
obj.push_back(Pair("confirmations", (nConf == std::numeric_limits<int>::max() ? 0 : nConf))); obj.push_back(Pair("confirmations", (nConf == std::numeric_limits<int>::max() ? 0 : nConf)));
obj.push_back(Pair("bcconfirmations", (nBCConf == std::numeric_limits<int>::max() ? 0 : nBCConf)));
ret.push_back(obj); ret.push_back(obj);
} }
} }
@ -1153,6 +1165,7 @@ Value listreceivedbyaddress(const Array& params, bool fHelp)
" \"account\" : \"accountname\", (string) The account of the receiving address. The default account is \"\".\n" " \"account\" : \"accountname\", (string) The account of the receiving address. The default account is \"\".\n"
" \"amount\" : x.xxx, (numeric) The total amount in btc received by the address\n" " \"amount\" : x.xxx, (numeric) The total amount in btc received by the address\n"
" \"confirmations\" : n (numeric) The number of confirmations of the most recent transaction included\n" " \"confirmations\" : n (numeric) The number of confirmations of the most recent transaction included\n"
" \"bcconfirmations\" : n (numeric) The number of blockchain confirmations of the most recent transaction included\n"
" }\n" " }\n"
" ,...\n" " ,...\n"
"]\n" "]\n"
@ -1184,6 +1197,7 @@ Value listreceivedbyaccount(const Array& params, bool fHelp)
" \"account\" : \"accountname\", (string) The account name of the receiving account\n" " \"account\" : \"accountname\", (string) The account name of the receiving account\n"
" \"amount\" : x.xxx, (numeric) The total amount received by addresses with this account\n" " \"amount\" : x.xxx, (numeric) The total amount received by addresses with this account\n"
" \"confirmations\" : n (numeric) The number of confirmations of the most recent transaction included\n" " \"confirmations\" : n (numeric) The number of confirmations of the most recent transaction included\n"
" \"bcconfirmations\" : n (numeric) The number of blockchain confirmations of the most recent transaction included\n"
" }\n" " }\n"
" ,...\n" " ,...\n"
"]\n" "]\n"
@ -1323,6 +1337,8 @@ Value listtransactions(const Array& params, bool fHelp)
" 'send' category of transactions.\n" " 'send' category of transactions.\n"
" \"confirmations\": n, (numeric) The number of confirmations for the transaction. Available for 'send' and \n" " \"confirmations\": n, (numeric) The number of confirmations for the transaction. Available for 'send' and \n"
" 'receive' category of transactions.\n" " 'receive' category of transactions.\n"
" \"bcconfirmations\": n, (numeric) The number of blockchain confirmations for the transaction. Available for 'send'\n"
" and 'receive' category of transactions.\n"
" \"blockhash\": \"hashvalue\", (string) The block hash containing the transaction. Available for 'send' and 'receive'\n" " \"blockhash\": \"hashvalue\", (string) The block hash containing the transaction. Available for 'send' and 'receive'\n"
" category of transactions.\n" " category of transactions.\n"
" \"blockindex\": n, (numeric) The block index containing the transaction. Available for 'send' and 'receive'\n" " \"blockindex\": n, (numeric) The block index containing the transaction. Available for 'send' and 'receive'\n"
@ -1500,6 +1516,7 @@ Value listsinceblock(const Array& params, bool fHelp)
" \"vout\" : n, (numeric) the vout value\n" " \"vout\" : n, (numeric) the vout value\n"
" \"fee\": x.xxx, (numeric) The amount of the fee in btc. This is negative and only available for the 'send' category of transactions.\n" " \"fee\": x.xxx, (numeric) The amount of the fee in btc. This is negative and only available for the 'send' category of transactions.\n"
" \"confirmations\": n, (numeric) The number of confirmations for the transaction. Available for 'send' and 'receive' category of transactions.\n" " \"confirmations\": n, (numeric) The number of confirmations for the transaction. Available for 'send' and 'receive' category of transactions.\n"
" \"bcconfirmations\" : n, (numeric) The number of blockchain confirmations for the transaction. Available for 'send' and 'receive' category of transactions.\n"
" \"blockhash\": \"hashvalue\", (string) The block hash containing the transaction. Available for 'send' and 'receive' category of transactions.\n" " \"blockhash\": \"hashvalue\", (string) The block hash containing the transaction. Available for 'send' and 'receive' category of transactions.\n"
" \"blockindex\": n, (numeric) The block index containing the transaction. Available for 'send' and 'receive' category of transactions.\n" " \"blockindex\": n, (numeric) The block index containing the transaction. Available for 'send' and 'receive' category of transactions.\n"
" \"blocktime\": xxx, (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n" " \"blocktime\": xxx, (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n"
@ -1551,7 +1568,7 @@ Value listsinceblock(const Array& params, bool fHelp)
{ {
CWalletTx tx = (*it).second; CWalletTx tx = (*it).second;
if (depth == -1 || tx.GetDepthInMainChain() < depth) if (depth == -1 || tx.GetDepthInMainChain(false) < depth)
ListTransactions(tx, "*", 0, true, transactions, filter); ListTransactions(tx, "*", 0, true, transactions, filter);
} }
@ -1578,6 +1595,7 @@ Value gettransaction(const Array& params, bool fHelp)
"{\n" "{\n"
" \"amount\" : x.xxx, (numeric) The transaction amount in btc\n" " \"amount\" : x.xxx, (numeric) The transaction amount in btc\n"
" \"confirmations\" : n, (numeric) The number of confirmations\n" " \"confirmations\" : n, (numeric) The number of confirmations\n"
" \"bcconfirmations\" : n, (numeric) The number of blockchain confirmations\n"
" \"blockhash\" : \"hash\", (string) The block hash\n" " \"blockhash\" : \"hash\", (string) The block hash\n"
" \"blockindex\" : xx, (numeric) The block index\n" " \"blockindex\" : xx, (numeric) The block index\n"
" \"blocktime\" : ttt, (numeric) The time in seconds since epoch (1 Jan 1970 GMT)\n" " \"blocktime\" : ttt, (numeric) The time in seconds since epoch (1 Jan 1970 GMT)\n"

View File

@ -108,7 +108,8 @@ bool fMasterNode = false;
string strMasterNodePrivKey = ""; string strMasterNodePrivKey = "";
string strMasterNodeAddr = ""; string strMasterNodeAddr = "";
bool fLiteMode = false; bool fLiteMode = false;
int nInstantXDepth = 1; bool fEnableInstantX = true;
int nInstantXDepth = 5;
int nDarksendRounds = 2; int nDarksendRounds = 2;
int nAnonymizeDarkcoinAmount = 1000; int nAnonymizeDarkcoinAmount = 1000;
int nLiquidityProvider = 0; int nLiquidityProvider = 0;

View File

@ -32,6 +32,7 @@
extern bool fMasterNode; extern bool fMasterNode;
extern bool fLiteMode; extern bool fLiteMode;
extern bool fEnableInstantX;
extern int nInstantXDepth; extern int nInstantXDepth;
extern int nDarksendRounds; extern int nDarksendRounds;
extern int nAnonymizeDarkcoinAmount; extern int nAnonymizeDarkcoinAmount;

View File

@ -3254,7 +3254,7 @@ int CMerkleTx::GetTransactionLockSignatures() const
{ {
if(fLargeWorkForkFound || fLargeWorkInvalidChainFound) return -2; if(fLargeWorkForkFound || fLargeWorkInvalidChainFound) return -2;
if(!IsSporkActive(SPORK_2_INSTANTX)) return -3; if(!IsSporkActive(SPORK_2_INSTANTX)) return -3;
if(nInstantXDepth == 0) return -1; if(!fEnableInstantX) return -1;
//compile consessus vote //compile consessus vote
std::map<uint256, CTransactionLock>::iterator i = mapTxLocks.find(GetHash()); std::map<uint256, CTransactionLock>::iterator i = mapTxLocks.find(GetHash());
@ -3267,7 +3267,7 @@ int CMerkleTx::GetTransactionLockSignatures() const
bool CMerkleTx::IsTransactionLockTimedOut() const bool CMerkleTx::IsTransactionLockTimedOut() const
{ {
if(nInstantXDepth == 0) return 0; if(!fEnableInstantX) return 0;
//compile consessus vote //compile consessus vote
std::map<uint256, CTransactionLock>::iterator i = mapTxLocks.find(GetHash()); std::map<uint256, CTransactionLock>::iterator i = mapTxLocks.find(GetHash());