Created
August 11, 2021 02:30
-
-
Save davidawad/0941deba602fc8f971cf107079eb8db7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
progressTracker.setCurrentStep(OTHER_TX_COMPONENTS); | |
// Reference input states are constructed from StateAndRefs. | |
ReferencedStateAndRef referenceState = ourStateAndRef.referenced(); | |
// Output states are constructed from scratch. | |
DummyState ourOutputState = new DummyState(); | |
// Or as copies of other states with some properties changed. | |
DummyState ourOtherOutputState = ourOutputState.copy(77); | |
// We then need to pair our output state with a contract. | |
StateAndContract ourOutput = new StateAndContract(ourOutputState, DummyContract.PROGRAM_ID); | |
// Commands pair a ``CommandData`` instance with a list of | |
// public keys. To be valid, the transaction requires a signature | |
// matching every public key in all of the transaction's commands. | |
DummyContract.Commands.Create commandData = new DummyContract.Commands.Create(); | |
PublicKey ourPubKey = getServiceHub().getMyInfo().getLegalIdentitiesAndCerts().get(0).getOwningKey(); | |
PublicKey counterpartyPubKey = counterparty.getOwningKey(); | |
List<PublicKey> requiredSigners = ImmutableList.of(ourPubKey, counterpartyPubKey); | |
Command<DummyContract.Commands.Create> ourCommand = new Command<>(commandData, requiredSigners); | |
// ``CommandData`` can either be: | |
// 1. Of type ``TypeOnlyCommandData``, in which case it only | |
// serves to attach signers to the transaction and possibly | |
// fork the contract's verification logic. | |
TypeOnlyCommandData typeOnlyCommandData = new DummyContract.Commands.Create(); | |
// 2. Include additional data which can be used by the contract | |
// during verification, alongside fulfilling the roles above | |
CommandData commandDataWithData = new Cash.Commands.Issue(); | |
// Attachments are identified by their hash. | |
// The attachment with the corresponding hash must have been | |
// uploaded ahead of time via the node's RPC interface. | |
SecureHash ourAttachment = SecureHash.sha256("DummyAttachment"); | |
// Time windows represent the period of time during which a | |
// transaction must be notarised. They can have a start and an end | |
// time, or be open at either end. | |
TimeWindow ourTimeWindow = TimeWindow.between(Instant.MIN, Instant.MAX); | |
TimeWindow ourAfter = TimeWindow.fromOnly(Instant.MIN); | |
TimeWindow ourBefore = TimeWindow.untilOnly(Instant.MAX); | |
// We can also define a time window as an ``Instant`` +/- a time | |
// tolerance (e.g. 30 seconds): | |
TimeWindow ourTimeWindow2 = TimeWindow.withTolerance(getServiceHub().getClock().instant(), Duration.ofSeconds(30)); | |
// Or as a start-time plus a duration: | |
TimeWindow ourTimeWindow3 = TimeWindow.fromStartAndDuration(getServiceHub().getClock().instant(), Duration.ofSeconds(30)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment