Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/nine-bushes-act.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@hashgraph/asset-tokenization-contracts": minor
---

Bond and Equity storage layout updated to avoid breaking change and inconsistency with previous versions
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@ abstract contract BondStorageWrapper is IBondStorageWrapper, ERC20PermitStorageW
using EnumerableSet for EnumerableSet.Bytes32Set;

struct BondDataStorage {
IBondRead.BondDetailsData bondDetail;
bytes3 currency;
uint256 nominalValue;
uint256 startingDate;
uint256 maturityDate;
bool initialized;
uint8 nominalValueDecimals;
}

/**
Expand All @@ -32,7 +36,11 @@ abstract contract BondStorageWrapper is IBondStorageWrapper, ERC20PermitStorageW
}

function _storeBondDetails(IBondRead.BondDetailsData memory _bondDetails) internal {
_bondStorage().bondDetail = _bondDetails;
_bondStorage().currency = _bondDetails.currency;
_bondStorage().nominalValue = _bondDetails.nominalValue;
_bondStorage().nominalValueDecimals = _bondDetails.nominalValueDecimals;
_bondStorage().startingDate = _bondDetails.startingDate;
_bondStorage().maturityDate = _bondDetails.maturityDate;
}

function _setCoupon(
Expand Down Expand Up @@ -62,16 +70,22 @@ abstract contract BondStorageWrapper is IBondStorageWrapper, ERC20PermitStorageW
* @return success_ True if the maturity date was set successfully.
*/
function _setMaturityDate(uint256 _maturityDate) internal returns (bool success_) {
_bondStorage().bondDetail.maturityDate = _maturityDate;
_bondStorage().maturityDate = _maturityDate;
return true;
}

function _getBondDetails() internal view returns (IBondRead.BondDetailsData memory bondDetails_) {
bondDetails_ = _bondStorage().bondDetail;
bondDetails_ = IBondRead.BondDetailsData({
currency: _bondStorage().currency,
nominalValue: _bondStorage().nominalValue,
nominalValueDecimals: _bondStorage().nominalValueDecimals,
startingDate: _bondStorage().startingDate,
maturityDate: _bondStorage().maturityDate
});
}

function _getMaturityDate() internal view returns (uint256 maturityDate_) {
return _bondStorage().bondDetail.maturityDate;
return _bondStorage().maturityDate;
}

function _getCoupon(uint256 _couponID) internal view returns (IBondRead.RegisteredCoupon memory registeredCoupon_) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,32 @@ abstract contract EquityStorageWrapper is IEquityStorageWrapper, BondStorageWrap
using EnumerableSet for EnumerableSet.Bytes32Set;

struct EquityDataStorage {
IEquity.EquityDetailsData equityDetailsData;
bool votingRight;
bool informationRight;
bool liquidationRight;
bool subscriptionRight;
bool conversionRight;
bool redemptionRight;
bool putRight;
IEquity.DividendType dividendRight;
bytes3 currency;
uint256 nominalValue;
bool initialized;
uint8 nominalValueDecimals;
}

function _storeEquityDetails(IEquity.EquityDetailsData memory _equityDetailsData) internal {
_equityStorage().equityDetailsData = _equityDetailsData;
_equityStorage().votingRight = _equityDetailsData.votingRight;
_equityStorage().informationRight = _equityDetailsData.informationRight;
_equityStorage().liquidationRight = _equityDetailsData.liquidationRight;
_equityStorage().subscriptionRight = _equityDetailsData.subscriptionRight;
_equityStorage().conversionRight = _equityDetailsData.conversionRight;
_equityStorage().redemptionRight = _equityDetailsData.redemptionRight;
_equityStorage().putRight = _equityDetailsData.putRight;
_equityStorage().dividendRight = _equityDetailsData.dividendRight;
_equityStorage().currency = _equityDetailsData.currency;
_equityStorage().nominalValue = _equityDetailsData.nominalValue;
_equityStorage().nominalValueDecimals = _equityDetailsData.nominalValueDecimals;
}

function _setDividends(
Expand Down Expand Up @@ -97,7 +117,19 @@ abstract contract EquityStorageWrapper is IEquityStorageWrapper, BondStorageWrap
}

function _getEquityDetails() internal view returns (IEquity.EquityDetailsData memory equityDetails_) {
equityDetails_ = _equityStorage().equityDetailsData;
equityDetails_ = IEquity.EquityDetailsData({
votingRight: _equityStorage().votingRight,
informationRight: _equityStorage().informationRight,
liquidationRight: _equityStorage().liquidationRight,
subscriptionRight: _equityStorage().subscriptionRight,
conversionRight: _equityStorage().conversionRight,
redemptionRight: _equityStorage().redemptionRight,
putRight: _equityStorage().putRight,
dividendRight: _equityStorage().dividendRight,
currency: _equityStorage().currency,
nominalValue: _equityStorage().nominalValue,
nominalValueDecimals: _equityStorage().nominalValueDecimals
});
}

/**
Expand Down