Bitcoin Forum
November 07, 2024, 05:46:03 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Warning: One or more bitcointalk.org users have reported that they strongly believe that the creator of this topic is a scammer. (Login to see the detailed trust ratings.) While the bitcointalk.org administration does not verify such claims, you should proceed with extreme caution.
Pages: « 1 [2] 3 »  All
  Print  
Author Topic: Bytecoin: Under the Hood  (Read 3219 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
tacotime
Legendary
*
Offline Offline

Activity: 1484
Merit: 1005



View Profile
April 06, 2015, 07:09:16 PM
 #21

Also, am I right to say that the introduction of this new feature means that unlike other cryptocurrencies I would be able to pay for coffee and not to wait until my transaction is completed?

No, it just tells you if a tx with an output belonging to you is in the mempool or not. Previously you had to wait about 2 minutes for it to enter a block to see if it was there or not. It's not instant tx, it's more like "did any of the transactions I saw recently on the network have funds belonging to me". I think it was a Bitcoin core wallet feature from day one.

Code:
XMR: 44GBHzv6ZyQdJkjqZje6KLZ3xSyN1hBSFAnLP6EAqJtCRVzMzZmeXTC2AHKDS9aEDTRKmo6a6o9r9j86pYfhCWDkKjbtcns
Cheesus
Sr. Member
****
Offline Offline

Activity: 692
Merit: 254


terra-credit.com


View Profile
April 06, 2015, 07:10:19 PM
 #22

What will happen with double-spend attack or a tx that is stuck in the tx pool in case of IWallet and ITransaction? Is there any difference from standard wallet/daemon?

███████████████████████
  █████████████████████ 
    ███████████████████ 
      █████████████████ 
███████████████████████
          █████████████ 
            ███████████ 
              █████████ 
                ███████ 
                  ████ 
                    ███ 
                     
terracredit


















Powered by,
Wanesst
Sr. Member
****
Offline Offline

Activity: 421
Merit: 250



View Profile
April 06, 2015, 07:13:35 PM
 #23

Also, am I right to say that the introduction of this new feature means that unlike other cryptocurrencies I would be able to pay for coffee and not to wait until my transaction is completed?

No, it just tells you if a tx with an output belonging to you is in the mempool or not. Previously you had to wait about 2 minutes for it to enter a block to see if it was there or not. It's not instant tx, it's more like "did any of the transactions I saw recently on the network have funds belonging to me". I think it was a Bitcoin core wallet feature from day one.

Nice answer! Thank you! Smiley

Ullo (OP)
Member
**
Offline Offline

Activity: 108
Merit: 10


View Profile WWW
April 06, 2015, 07:14:44 PM
 #24

What will happen with double-spend attack or a tx that is stuck in the tx pool in case of IWallet and ITransaction? Is there any difference from standard wallet/daemon?

Our high and low-level API gives access to core CryptoNote and Bytecoin functions. It doesn't change the way various events are being processed inside Bytecoin. So there is absolutely no difference from the protocol perspective. So, to answer your question, a transaction that is stuck in the transaction pool is going to be excluded within 24 hours with the funds being returned to the original sender.

Bytecoin BCN core team: https://bytecoin.org/
Cheesus
Sr. Member
****
Offline Offline

Activity: 692
Merit: 254


terra-credit.com


View Profile
April 06, 2015, 07:19:19 PM
 #25

And what's going to happen if there is the same wallet opened on two different PCs (with different interfaces)?

███████████████████████
  █████████████████████ 
    ███████████████████ 
      █████████████████ 
███████████████████████
          █████████████ 
            ███████████ 
              █████████ 
                ███████ 
                  ████ 
                    ███ 
                     
terracredit


















Powered by,
darthcoin
Full Member
***
Offline Offline

Activity: 147
Merit: 100


View Profile
April 06, 2015, 07:29:28 PM
 #26



Bytecoin team wanted to give a varying level of access to CryptoNote transactions core with two API interfaces:

  • IWallet operates on the business logics level. It is useful if you simply need to receive and send transactions, without going into CryptoNote protocol details. Should you require to transfer money with IWallet, you just need to indicate the receiver's address, the amount, and the mixing level. IWallet will do the hard work for you, as it will select the inputs, and then create, validate, sign, and broadcast the transaction.
  • ITransaction is a low-level interface that gives full access to CryptoNote transactions engine. It is designed for those applications that require strict control of transaction creation process. For instance, ITransaction allows you to select specific inputs, and has separate methods for signing and broadcasting a transaction. It also provides access to multisig functionality.

Both API interfaces are capable of doing exactly the same, but with varying level of detalization. That is why IWallet belongs to Bytecoin high-level API, while ITransaction is low-level.



Is it possible to switch between IWallet and ITransactions? Will it give any advantages to the user?
bit73
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
April 06, 2015, 07:35:06 PM
 #27

Good to see progress in Bytecoin development. Are you planning to bring Bytecoin into SuperNet or Blocknet? I tested SuperNET beta recently and it is looks very promising. Blocknet is still in early stage but could be an option, too.
heyhey-u
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
April 06, 2015, 07:36:10 PM
 #28



Bytecoin IWallet and ITransaction

While INode is capable of relaying and processing blocks, it cannot access any information regarding user funds or create transactions. However, there are certain applications (e.g. wallets) that require such methods.

Bytecoin team wanted to give a varying level of access to CryptoNote transactions core with two API interfaces:


ok, bytecoin devs. awesome! a lot of technical things were done. but, you know, i'm still too noobish to understand that. what is the purpose to use iwallet? who needs itransactions? if i'm an owner of super-cool-online-store "buy whatever for bytecoin" which one do i need to use?

cryptonight.net
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile WWW
April 06, 2015, 07:38:20 PM
 #29

What will happen with double-spend attack or a tx that is stuck in the tx pool in case of IWallet and ITransaction? Is there any difference from standard wallet/daemon?

Our high and low-level API gives access to core CryptoNote and Bytecoin functions. It doesn't change the way various events are being processed inside Bytecoin. So there is absolutely no difference from the protocol perspective. So, to answer your question, a transaction that is stuck in the transaction pool is going to be excluded within 24 hours with the funds being returned to the original sender.

Why Bytecoin transactions can stuck in mempool for long time?
Lamalicious
Member
**
Offline Offline

Activity: 148
Merit: 10


View Profile
April 06, 2015, 07:47:17 PM
 #30



Bytecoin IWallet and ITransaction

While INode is capable of relaying and processing blocks, it cannot access any information regarding user funds or create transactions. However, there are certain applications (e.g. wallets) that require such methods.

Bytecoin team wanted to give a varying level of access to CryptoNote transactions core with two API interfaces:


ok, bytecoin devs. awesome! a lot of technical things were done. but, you know, i'm still too noobish to understand that. what is the purpose to use iwallet? who needs itransactions? if i'm an owner of super-cool-online-store "buy whatever for bytecoin" which one do i need to use?



It seems to me iwallet will be useful for business.

Ullo (OP)
Member
**
Offline Offline

Activity: 108
Merit: 10


View Profile WWW
April 06, 2015, 07:53:20 PM
 #31

And what's going to happen if there is the same wallet opened on two different PCs (with different interfaces)?

It depends whether both wallet interfaces are capable of instant transaction notification. As of now, it is not available in proxying INode, only in the in-process one. That means that simplewallet doesn't yet have this feature available. This is going to be updated in the upcoming releases.

So generally speaking, if we have several wallets opened right now, and one of them (B) is not capable of instant transactions notification, the following will happen. The wallet B will be able to recognize the transaction only when it's in the blockchain, so it's not safe to send the transaction from wallet B until the one sent by wallet A is confirmed. Apart from that, the balances of the wallets are synced.

That's not an issue with two applications running on in-proccess INode, as it will be perfectly synced.

Bytecoin BCN core team: https://bytecoin.org/
Ullo (OP)
Member
**
Offline Offline

Activity: 108
Merit: 10


View Profile WWW
April 06, 2015, 08:00:34 PM
 #32

Good to see progress in Bytecoin development. Are you planning to bring Bytecoin into SuperNet or Blocknet? I tested SuperNET beta recently and it is looks very promising. Blocknet is still in early stage but could be an option, too.

We've communicated with SuperNET previously and we might consider working closer with it in the future.

ok, bytecoin devs. awesome! a lot of technical things were done. but, you know, i'm still too noobish to understand that. what is the purpose to use iwallet? who needs itransactions? if i'm an owner of super-cool-online-store "buy whatever for bytecoin" which one do i need to use?

This 1.0.3 Bytecoin reference client release is dev-oriented, so as a user you won't be able to notice the difference right now. I guess GUI Wallet (coming out later this week) will be more attractive to you. And if you are a merchant willing to accept Bytecoins, your solution is payment gateway (coming out with v.1.0.4), not C++ API libraries.

Is it possible to switch between IWallet and ITransactions? Will it give any advantages to the user?

Yes, it is possible to utilize both IWallet and ITransaction inside your application. There are no advantages or disadvantages, as you should use the proper library for your particular requirements. If you're willing to just send the transaction out-of-box, then use IWallet. If you need to implement a complicated logic of input selection, your choice is ITransaction.

Bytecoin BCN core team: https://bytecoin.org/
heyhey-u
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
April 06, 2015, 08:07:02 PM
 #33

Good to see progress in Bytecoin development. Are you planning to bring Bytecoin into SuperNet or Blocknet? I tested SuperNET beta recently and it is looks very promising. Blocknet is still in early stage but could be an option, too.

We've communicated with SuperNET previously and we might consider working closer with it in the future.

ok, bytecoin devs. awesome! a lot of technical things were done. but, you know, i'm still too noobish to understand that. what is the purpose to use iwallet? who needs itransactions? if i'm an owner of super-cool-online-store "buy whatever for bytecoin" which one do i need to use?

This 1.0.3 Bytecoin reference client release is dev-oriented, so as a user you won't be able to notice the difference right now. I guess GUI Wallet (coming out later this week) will be more attractive to you. And if you are a merchant willing to accept Bytecoins, your solution is payment gateway (coming out with v.1.0.4), not C++ API libraries.

Is it possible to switch between IWallet and ITransactions? Will it give any advantages to the user?

Yes, it is possible to utilize both IWallet and ITransaction inside your application. There are no advantages or disadvantages, as you should use the proper library for your particular requirements. If you're willing to just send the transaction out-of-box, then use IWallet. If you need to implement a complicated logic of input selection, your choice is ITransaction.

thx bytecoin dev
Ullo (OP)
Member
**
Offline Offline

Activity: 108
Merit: 10


View Profile WWW
April 06, 2015, 08:07:42 PM
 #34

I'm sorry for the triple posting.

Why Bytecoin transactions can stuck in mempool for long time?

It may generally happen due to the following reasons:

1. The fee is too low and no miner is accepting the transaction.
2. The transaction size is too large (in kb). This may happen due to a lot of small inputs involved instead of larger ones. A large mixing amount (>15) may also contribute to excessive size of a transaction.

Bytecoin BCN core team: https://bytecoin.org/
Wanesst
Sr. Member
****
Offline Offline

Activity: 421
Merit: 250



View Profile
April 06, 2015, 08:08:37 PM
 #35

This 1.0.3 Bytecoin reference client release is dev-oriented, so as a user you won't be able to notice the difference right now. I guess GUI Wallet (coming out later this week) will be more attractive to you. And if you are a merchant willing to accept Bytecoins, your solution is payment gateway (coming out with v.1.0.4), not C++ API libraries.

Why would a regular user need that stuff? From what I understand I don't need to download this Bytecoin update if I'm not a dev?

dlightman
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile
April 06, 2015, 08:18:14 PM
 #36

Also, am I right to say that the introduction of this new feature means that unlike other cryptocurrencies I would be able to pay for coffee and not to wait until my transaction is completed?

No, it just tells you if a tx with an output belonging to you is in the mempool or not. Previously you had to wait about 2 minutes for it to enter a block to see if it was there or not. It's not instant tx, it's more like "did any of the transactions I saw recently on the network have funds belonging to me". I think it was a Bitcoin core wallet feature from day one.

For Bitcoin and derived forks it's much cheaper from both computational and architectural points of view to check if this tx is mine or not. In CryptoNote wallet and daemon are separated and need additional interfaces to talk about mempool content. And key derivation also consumes CPU.
dewdeded
Legendary
*
Offline Offline

Activity: 1232
Merit: 1011


Monero Evangelist


View Profile
April 06, 2015, 09:32:28 PM
 #37

Interested.
OrientA
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250



View Profile
April 07, 2015, 09:22:31 AM
 #38

Keep up the good work.
bitfancier
Newbie
*
Offline Offline

Activity: 23
Merit: 0


View Profile
April 07, 2015, 09:31:45 AM
 #39


A lot of work has been done on refactoring Bytecoin Core’s source code. This process started with the version 0.8.11, which had Bytecoin high-level API interface declared for the first time. The newly released Bytecoin Reference Client v.1.0.3 is the next significant updated for the Bytecoin Core.

Here I will explain what has been happening under the Bytecoin's hood and what our technology vision is. This description is crucial to understand Bytecoin’s roadmap and the necessity to pursue its vector.

The v.1.0.3 release notes focus on the following updates:

  • In-process INode implementation for applications
  • Low-level ITransaction API interface for ordinary and multisig transactions
  • Simplewallet migration to high-level API (namely, INode plus IWallet)
  • Instant transaction notifications for in-process INode


Purpose of this update

V.1.0.3 is an important milestone on the way to standardize various components' access to Bytecoin network. It is also a requirement for Bytecoin GUI Wallet, which is coming out later this week.

We are currently getting Bytecoin Wallet ready for the release, and have already rolled out the new version of simplewallet. These wallets are very different, as simplewallet doesn't provide real-time interaction and shows only a tiny part of the information that Bytecoin Wallet has. However, both wallets are powered by exactly the same two high-level API interfaces: INode and IWallet. This allows us to greatly unify Bytecoin source code and improve development process efficiency.

What is even more important, the newly updated high-level API gives 3rd party developers the native access to all Bytecoin features. As of now, any developer wishing to create his own native Bytecoin wallet has all the tools available.

We firmly believe that for the vast majority of cases 3rd party developers should operate on the business logics level, not going into technological hardcore. Our high-level API (namely, INode and IWallet interfaces) serves that very purpose. It is much easier to operate with from inside a C++ application than the classical bytecoind and simplewallet REST API. It gives access to all main Bytecoin features in a convenient and comprehensible way. For example, you don't need to take care of an instance of simplewallet running in the background to power your GUI wallet. Business can focus on the user experience and let IWallet work out-of-box! And in case you need to have a higher level of control over CryptoNote protocol, utilize low-level ITransaction interface instead of high-level IWallet.

By introducing such a level of abstraction, we greatly simplify the experience of applications developers that work with Bytecoin. Our high-level API is a single point of responsibility. In case you need a method that is not yet provided, you may contact Bytecoin Support and have it implemented in the upcoming releases.


INode

Bytecoin network basics

Bytecoin depends on its peer-to-peer network, basic unit of which is a node. The most common node that you may find in the network is Bytecoin Reference Client daemon (bytecoind).

There are two general types of nodes:

  • Seed is a node that allows inbound connections.
  • Peer is a node that doesn't allow inbound connections (e.g. if its user chooses so or due to firewall network rules). Since all the nodes are frequently asking other seed nodes if anything new has happened in the network (a new block mainly), peers are still perfectly synced.

INode and Bytecoin network node

Currently there are two implementations of Bytecoin nodes available:

  • Standard bytecoind console daemon which is capable of using Bytecoin p2p protocol and providing RPC interface for external access.
  • INode, which is an API library that allows any C++ application to participate in Bytecoin p2p network on the blocks level. Any application that uses INode API library is indistinguishable from other network nodes.

Bytecoin’s daemon refactoring announced in Bytecoin roadmap implies, among other improvements, daemon migration to INode library. We are doing to this to unify Bytecoin technology core and allow any 3rd party developers to easily access all Bytecoin network features. The resulting application, whatever purpose it may have, will be a full-fledged Bytecoin node. Moreover, INode library is more efficient than the legacy bytecoind source code.

INode is one interface that has two implementations: proxying INode and in-process INode.

  • Proxying INode re-routes all the requests to another node (e.g. your localhost bytecoind or some other remote daemon).
  • In-process INode is a standalone network node that is capable of exactly everything the ordinary daemon can do. It is called "in-process" since it runs inside another application that requires Bytecoin network access.

Prior to Bytecoin v.1.0.3 only the proxying INode implementation was available. With an advent of in-process one, INode becomes much more flexible. For instance, if you have a local daemon running, the application that utilizes INode will choose its proxying implementation and connect to local bytecoind instead of launching a new in-process instance.


Bytecoin IWallet and ITransaction

While INode is capable of relaying and processing blocks, it cannot access any information regarding user funds or create transactions. However, there are certain applications (e.g. wallets) that require such methods.

Bytecoin team wanted to give a varying level of access to CryptoNote transactions core with two API interfaces:

  • IWallet operates on the business logics level. It is useful if you simply need to receive and send transactions, without going into CryptoNote protocol details. Should you require to transfer money with IWallet, you just need to indicate the receiver's address, the amount, and the mixing level. IWallet will do the hard work for you, as it will select the inputs, and then create, validate, sign, and broadcast the transaction.
  • ITransaction is a low-level interface that gives full access to CryptoNote transactions engine. It is designed for those applications that require strict control of transaction creation process. For instance, ITransaction allows you to select specific inputs, and has separate methods for signing and broadcasting a transaction. It also provides access to multisig functionality.

Both API interfaces are capable of doing exactly the same, but with varying level of detalization. That is why IWallet belongs to Bytecoin high-level API, while ITransaction is low-level.

Both new simplewallet and the upcoming Bytecoin Wallet have IWallet in their core. Just like INode interface can boast with better performance than legacy bytecoind, IWallet is a faster version of legacy simplewallet source code. As of version 1.0.3 simplewallet has migrated to this interface, which reduced the time required to process a single block by 15%.

To be precise, new Bytecoin simplewallet is a basic console program that uses IWallet and proxying INode. On the other hand, Bytecoin GUI Wallet utilizes IWallet and in-process INode (which automatically runs as proxying in case you already have an instance of bytecoind launched).

We expect the vast majority of applications to choose IWallet, while ITransaction is for those who require CryptoNote transactions fine-tuning. For instance, this level of access may be required by such services as payment processors. These applications often have their own custom logic of transaction creation and various complicated modules. ITransaction allows to split the transfer process according to the architecture needs.

Moreover, ITransaction also gives access to multisignature API that is capable of powering on-blockchain escrow services and foundation wallets. Bytecoin multisig belongs to M-of-N scheme. We will be covering multisignature in details in one of the next blog posts, but here you may find its description in laymen terms.


Conclusions

Said APIs are important to those businesses that want to operate with cryptocurrency easily, without sophisticated development and core’s explorations. These businesses can focus on marketing of their products; all the hard work of integration with our financial system is done by our reliable interfaces.


More details on v.1.0.3 Reference Client release

http://bytecoin.org/static/img/bytecoin-roadmap.png

In-process INode implementation for applications

INode is the high-level API interface that allows any application to utilize core features of Bytecoin p2p network. Its new implementation provides a full-fledged network node inside any C++ application. It also largely standardizes codebase and powers Bytecoin GUI Wallet, which is coming out later this week.

Low-level ITransaction API interface for ordinary and multisig transactions

Bytecoin low-level API interface provides 3rd party developers with a flexible access to CryptoNote transactions engine. It gives access to core functions that allow to create, validate, sign, and broadcast a transaction. It also provides multisig access.

This update is aimed for wallet and multisig applications developers. Bytecoin low-level API provides full control of CryptoNote transactions technology allowing you to select specific inputs of a transaction. It also gives tools to utilize multi-signature protocol and create such products as native escrow and M-of-N board wallets.

Instant transactions notification

With this feature Bytecoin transactions become real-time. When Alice broadcasts her newly created Bytecoin transaction to Bob, his wallet will immediately recognize it and update Bob's balance before the transaction is included in the blockchain. This is achieved through IWallet API interface that subscribes to all the transactions of the node it is connected to and instantly recognizes the transactions sent to you.

Simplewallet migration to high-level API

Legacy simplewallet code has been migrated to the new high-level API libraries. Even though simplewallet remains the same from the user perspective, everything under its hood is completely redesigned. This update is the showcase and reference implementation of Bytecoin high-level IWallet interface. Simplewallet operates through proxying INode interface only, so it still requires a running daemon.


Further reading

Bytecoin roadmap (discussion)
INode on Bytecoin wiki
IWallet on Bytecoin wiki
ITransaction on Bytecoin wiki

Great news!!! Let's finally get Bytecoin to the moon! I mean to Mars  Grin
Rias
Sr. Member
****
Offline Offline

Activity: 373
Merit: 250


View Profile
April 07, 2015, 10:17:46 AM
 #40

This 1.0.3 Bytecoin reference client release is dev-oriented, so as a user you won't be able to notice the difference right now. I guess GUI Wallet (coming out later this week) will be more attractive to you. And if you are a merchant willing to accept Bytecoins, your solution is payment gateway (coming out with v.1.0.4), not C++ API libraries.

Why would a regular user need that stuff? From what I understand I don't need to download this Bytecoin update if I'm not a dev?

The developers have mentioned several times that this update is for developers and 3rd party applications. It also powers the new GUI. It's worth reading the answers to the questions from time to time, especially if they repeat.

Also, I think you really underestimate the work that has been done inside Bytecoin tech. Try re-reading the OP, it gives a decent overview.

This 1.0.3 Bytecoin reference client release is dev-oriented, so as a user you won't be able to notice the difference right now. I guess GUI Wallet (coming out later this week) will be more attractive to you.
Pages: « 1 [2] 3 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!