diff --git a/.changeset/nine-bushes-act.md b/.changeset/nine-bushes-act.md new file mode 100644 index 000000000..4f1a1976e --- /dev/null +++ b/.changeset/nine-bushes-act.md @@ -0,0 +1,5 @@ +--- +"@hashgraph/asset-tokenization-contracts": minor +--- + +Bond and Equity storage layout updated to avoid breaking change and inconsistency with previous versions diff --git a/packages/ats/contracts/contracts/layer_0/bond/BondStorageWrapper.sol b/packages/ats/contracts/contracts/layer_0/bond/BondStorageWrapper.sol index 34ce4c947..728023f95 100644 --- a/packages/ats/contracts/contracts/layer_0/bond/BondStorageWrapper.sol +++ b/packages/ats/contracts/contracts/layer_0/bond/BondStorageWrapper.sol @@ -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; } /** @@ -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( @@ -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_) { diff --git a/packages/ats/contracts/contracts/layer_0/equity/EquityStorageWrapper.sol b/packages/ats/contracts/contracts/layer_0/equity/EquityStorageWrapper.sol index 5d66d6634..5133cb7f6 100644 --- a/packages/ats/contracts/contracts/layer_0/equity/EquityStorageWrapper.sol +++ b/packages/ats/contracts/contracts/layer_0/equity/EquityStorageWrapper.sol @@ -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( @@ -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 + }); } /**