Coder Social home page Coder Social logo

Comments (17)

mattbradburyuk avatar mattbradburyuk commented on September 16, 2024

Hi Barry,
We talked about this when we were developing the pattern. (Originally we didn't have the BillingState as a reference in the Transaction). The advantage is that as a BNO you can stop somebody operating on your network immediately even if they have stock piled pre chipped of BillingChips.

However, whether the BillingState is included in the Transaction or not, the information held in the BillingState Chain is still resolved by the Transaction so the participants in the Transaction all get to see the BillingState history anyway. What you never do though is resolve any previous Transactions (with Competitors)

So if it's a problem having the BillingState history, maybe it shows transaction volume history, or credit limit information, you can do a few things to hide actual volumes:

  • Over issue tokens, then at a later date Attach the excess back. Somebody looking at the chain before the attach back would not know how many tokens have actually been used in Transactions.

  • The BNO can issue multiple BillingStates to a single Party

I haven’t thought it through fully, but I think you may be able to get to the point where with the right obfuscation you leak no information about how much actual billing has taken place and can only infer that the Party’s total credit limit is greater or equal to the credit limit on that particular BillingState.

Although, I don’t think these obfuscation flows have been included in the coded application.

Matt

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

mattbradburyuk avatar mattbradburyuk commented on September 16, 2024

The billing states have an expiry + the BNO is a participant on the billing state. Just prior to the expiry time the BNO could issue the next BillingState then recall the previous one. Hence no period not covered by a billing state.

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

mattbradburyuk avatar mattbradburyuk commented on September 16, 2024

By effective date I assume you mean 'valid from' date. That sounds like a reasonable idea. Would that be so the switch over between previous and new BillingState can be near instantaneous, Ie reduced scope for edge cases at the swap over point as the swap over is necessarily in two non simultaneous transactions.

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

mattbradburyuk avatar mattbradburyuk commented on September 16, 2024

@IvanR3 FYI above on effective date.

from corda-solutions.

ischasny avatar ischasny commented on September 16, 2024

There is one already called issued: https://github.com/corda/corda-solutions/blob/master/bn-apps/billing/billing-contracts-and-states/src/main/kotlin/com/r3/businessnetworks/billing/states/BillingContract.kt#L227.

@bkreiser great point about leading billing state itself. The main idea behind adding billing state as a reference state into a transaction is to give the issuer an ability to revoke the billing state as a result of a governance action or something.

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

ischasny avatar ischasny commented on September 16, 2024

Ah yes, sorry my bad. we might need to add an issuedDate field

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

ischasny avatar ischasny commented on September 16, 2024

That definitely makes sense. Would you mind adding this field and creating a PR? @bkreiser

from corda-solutions.

bkreiser avatar bkreiser commented on September 16, 2024

from corda-solutions.

ischasny avatar ischasny commented on September 16, 2024

That's fine! Thanks Barry

from corda-solutions.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.