craterdog.accounting.DigitalTransaction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-digital-accounting Show documentation
Show all versions of java-digital-accounting Show documentation
This project defines a set of interfaces and classes that implement digital accounting.
/************************************************************************
* Copyright (c) Crater Dog Technologies(TM). All Rights Reserved. *
************************************************************************
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. *
* *
* This code is free software; you can redistribute it and/or modify it *
* under the terms of The MIT License (MIT), as published by the Open *
* Source Initiative. (See http://opensource.org/licenses/MIT) *
************************************************************************/
package craterdog.accounting;
import craterdog.notary.NotarySeal;
import craterdog.smart.SmartObject;
/**
* This class defines the attributes that make up a signed digital transaction that captures
* the transfer of a certified digital token from one account to another account. The transaction
* is signed using the signing keys of both the sender and the receiver of the digital token
* so that neither entity can deny the transaction at a later date. Optionally, an "escrow"
* third party can be involved when the transfer involves more than just the digital token, for
* example when the sender is giving the digital token to the receiver as payment for goods or
* services rendered.
*
* @author Derk Norton
*/
public final class DigitalTransaction extends SmartObject {
/**
* The actual attributes that make up the digital transaction.
*/
public TransactionAttributes attributes;
/**
* A notary seal generated by the sender using its private signing key to sign the attributes.
*/
public NotarySeal senderSeal;
/**
* A notary seal generated by the receiver using its private signing key to sign the
* sender's seal.
*/
public NotarySeal receiverSeal;
/**
* A notary seal generated by the escrow using its private signing key to sign the
* receiver's seal. This seal is only required when the escrowId
attribute
* has been set.
*/
public NotarySeal escrowSeal;
}