Miners in a blockchain system are suffering from the ever-increasing storage costs, which in general have not been properly compensated by the users' transaction fees. In the long run, this may lead to less participation of miners in the system and jeopardize the blockchain security. In this work, we mitigate such a blockchain storage sustainability issue by proposing a social welfare maximization mechanism, which encourages each user to pay sufficient transaction fees for the storage costs and consider the waiting time costs imposing on others. We model the interactions between the protocol designer, users, and miners as a three-stage Stackelberg game. In Stage I, the protocol designer optimizes the consensus parameters associated with the transaction fee per byte values and waiting time costs to maximize the social welfare. In Stage II, the users decide the transaction generation rates to maximize their payoffs. In Stage III, the miners select the transactions and record them into the blockchain to maximize their payoffs. Through characterizing the Nash equilibrium of the three-stage game, we find that the protocol designer can not only achieve maximum social welfare in Stage II and III of the model, but also incentivize each user pays sufficient transaction fees for storage costs. We also find that for users who generate transactions at lower rates, they may pay higher waiting time price per transaction for the waiting time costs they impose on other users. Ethereum-based numerical results showed that our proposed mechanism dominates the existing protocol in both social welfare and fees, achieves a higher fairness index than the existing protocol, and performs well even under heterogeneous-storage-cost miners.