## 5 Multi-Sided Ascending-Price Auction Mechanism  
Generally, the proposed multi-sided ascending-price auction mechanism is a randomized sequential mechanism, in which each category \(g\) is charged with a unified price \(p_{g}\) and the ascending price means that this price increased by \(\Delta\) in each step, accompanied by a query for each participant in a pre-specified order of whether the increased price is acceptable, e.g., whether the value is still higher than the price. Those who cannot accept the increased price would be permanently removed from the market, for example, those who would receive a potential negative utility if they stayed. The price sum for a recipe is monitored, and the auction terminates when this price sum crosses zero. The final procurement sets and prices are determined from the remaining participants. In practice, the bids and prices can be counted with a specific currency so that the quantity \(\Delta\) can be set as a currency unit, e.g., a dollar. The general process of the proposed multi-sided ascending-price auction mechanism is shown in Algorithm 4. The first step is initialization, in which the initial prices are well \begin{table}
\begin{tabular}{l l l} \hline \hline
**User (Value)** & **Service Provider (Value)** & **Served Bandwidth** \\ \hline User (17) & RAN Provider (\(-1\)), WAN Provider (\(-1\)) & 1 \\ User (17) & Satellite Network Provider (\(-4\)) & 2 \\ User (17) & RAN Provider (\(-3\)), WAN Provider (\(-1\)) & 2 \\ User (15) & Satellite Network Provider (\(-5\)) & 2 \\ User (14) & Satellite Network Provider (\(-5\)) & 1 \\ User (14) & Satellite Network Provider (\(-8\)) & 1 \\ User (13) & RAN Provider (\(-5\)), WAN Provider (\(-4\)) & 1 \\ \hline \hline \end{tabular}
\end{table} 
Table 4: The outcome of the optimal trade mechanism using the values and bandwidths from Figure 1(b). designed with a sufficiently large value \(V\), which satisfies \(-V<v_{i}<V\) for any participant \(i\). To determine the initial prices, the max depth \(MaxDepth\) of the recipe tree \(R\) and the depth \(Depth(g)\) for each category \(g\in G\) are calculated in advance. The initial prices are calculated for the non-leaf and leaf nodes separately so that the price sum in each path from the root to a leaf is the same. ```
0: A set of categories \(G\), a set of participants \(\mathcal{N}_{g}\) for all \(g\in G\), a recipe tree \(\mathcal{R}\), the values and bandwidths of all participants. ```
0: The procurement sets \(\mathcal{S}\) and a price vector \(\boldsymbol{p}=\{p_{g}\}\) for all \(g\in G\). 1. initialization: Determine the initial price vector \(\boldsymbol{p}\):  
For each non-leaf node \(g\), set \(p_{g}:=-V\);  
For each leaf node \(g\), set \(p_{g}:=-V\cdot(MaxDepth-Depth(g)+1)\). 2. Select \(G^{*}\subseteq G\) for price ascending with Algorithm 5. 3. Price ascending: For each \(g^{*}\in G^{*}\), ask each participant \(i\in\mathcal{N}_{g^{*}}\) whether \(v_{i}>p_{g^{*}}\) with a pre-specified order:  
If the answer is negative, then remove \(i\) from \(\mathcal{N}_{g^{*}}\), and go back to step 2. If the answers from all participants for all \(g^{*}\in G^{*}\) are positive, then for all \(g^{*}\in G^{*}\), update \(p_{g^{*}}=p_{g^{*}}+\Delta\);  
If, after the increase, the price sum of a recipe \(R\) crosses zero, i.e., \(\sum_{g\in G}p_{g}\cdot R_{g}\geq 0\), reset \(p_{g^{*}}=p_{g^{*}}-\sum_{g\in G}p_{g}\cdot R_{g}\) so that the price sum of a recipe is exactly zero. Then, go on to step 4. 4. Determine the final trade scheme with Algorithm 6. ```
**Algorithm 4** The ascending-price auction mechanism  
The next part chooses a subset of categories to be used for the price ascending process, which is accomplished by Algorithm 5. Note that \(m_{g}\) represents the sum of bandwidths for category \(g\) in our study, instead of the user numbers in ref. [11]. The key idea is to use the supply and demand relationship to determine the prices to be increased.