Comments (17)
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.
from corda-solutions.
from corda-solutions.
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.
from corda-solutions.
from corda-solutions.
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.
from corda-solutions.
@IvanR3 FYI above on effective date.
from corda-solutions.
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.
from corda-solutions.
Ah yes, sorry my bad. we might need to add an issuedDate field
from corda-solutions.
from corda-solutions.
from corda-solutions.
That definitely makes sense. Would you mind adding this field and creating a PR? @bkreiser
from corda-solutions.
from corda-solutions.
That's fine! Thanks Barry
from corda-solutions.
Related Issues (20)
- URI is not hierarchical exception from MemberConfigurationService while building the project
- Update site
- membership cordapp doesn't run on Corda Enterprise 4.1 HOT 3
- IssueBillingStateFlow fails when called over RPC
- In release 2.0 three tests in com.r3.businessnetworks.cordaupdates.transport.MavenOverFlowsTests fail
- Extension of the fields mapped for MembershipState
- Master build fails
- Compatibility with CordappContext.config
- SelfIssueMembershipFlow is not available in 2.0
- AmendMembershipMetadataFlow RPC annotation
- Multiple Business Networks HOT 1
- Need to add Flow level constraints to CDL
- Need to consider how to show attachments and time stamps in transactions in CDL
- Use custom linearId as a parameter when invoking 'IssueBillingStateFlow'
- RequestLedgersSyncFlow it not returning result
- how to handle a use-case where a node is sharing multiple BNO HOT 1
- 'corda-solutions-releases' does not contain 'corda-updates-app-core' & 'corda-updates-app-transport' HOT 1
- Hardcoded table creation does not work on Oracle HOT 1
- Billing Problem with Non BNO issuing billing states HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from corda-solutions.